博文

很奇妙的赋值 ruby(2007-04-11 14:48:00)

摘要: a = [1, 2, 3, 4] b,  c = a ? b == 1, c == 2 b, *c = a ? b == 1, c == [2, 3, 4] b,  c = 99,  a ? b == 99, c == [1, 2, 3, 4] b, *c = 99,  a ? b == 99, c == [[1, 2, 3, 4]] b,  c = 99, *a ? b == 99, c == 1 b, *c = 99, *a ? b == 99, c == [1, 2, 3, 4]......

阅读全文(1394) | 评论:0

echo(2007-04-10 16:44:00)

摘要:英文原义:Echo Protocol

中文释义:应答协议

注解:主要用于调试和检测中。它可以基于TCP协议,服务器就在TCP端口7检测有无消息,如果使用UDP协议,基本过程和TCP一样,检测的端口也是7。

echo:在dos操作系统是用来打开或者关闭屏幕回显的参数如下:

显示信息,或将命令回显打开或关上。

ECHO [ON | OFF]

要显示当前回显设置,键入不带参数的 ECHO。

ECHO [message]

用来在屏幕上显示“[]”中的内容

=======================================================
@echo .......前面的@表示

echo 这一行也不会回显
======================================================
可能会有人问那和print相比,他们有什么区别呢???

   print和echo以命令方式使用时没有任何区别  
   
  当print作为函数使用时,因为有返回值所以可以取得网络连接状态 自己理解:即是在cmd下,打印出字符......

阅读全文(1564) | 评论:0

ruby的excel操作(2007-04-06 09:40:00)

摘要:require 'win32ole' excel = WIN32OLE.new("excel.application")
excel.visible=true
workbook = excel.Workbooks.Add()#在excel中加入工作表
worksheet = workbook.Worksheets(2)#在工作表2中加入内容,可在123三个数之前进行选择,即选择了相应的sheet
worksheet.Range('A1:D1').value = ['North','South','East','West']#加入列名
......

阅读全文(4085) | 评论:1

ruby打印出类的属性(2007-04-05 15:37:00)

摘要:PR2是以一个卡拉OK点唱机为例子介绍Ruby编程的。新建一个songdata的文档,里面写入几个song的数据,然后从文件里读出数据并赋值给一个song对象然后打印出来。songdata文件中的内容如下: /jazz/j00132.mp3 |3:45| fats Waller|Ain't Misbehavin'
/jazz/j00319.mp3 |2:58| Louis Armstring | Wonderful World
/bgrass/bg0732.mp3 |Strength in Numbers | Texas Red 程序相应内容如下: require "Song_List"
require "song" song_file=File.open("songdata.txt")
songs = SongList.new song_file.each do |line|
fiel, length, name, title = line.chomp.split(/\s*\|\s*/)
songs.append(Song.new(title,name,length))
end
puts songs[1].to_s
puts songs[1].inspect 输出结果如下:  name is Wonderful World, artist is Louis Armstring, duration is 2:58
#<Song:0x2a37e18 @duration="2:58", @name="Wonderful World", @artist="Louis Armst
ring"> 1 其中因为用到了别的类,所以要用require引用一下,注意,引用的是文件名Song_List而不是类名songlist 2 song.rb中的to_s的方法定义如下: def to_s
    " name is #@name, artist is #@artist, duration is #@duration"   
   end 其中类中要有定义属性:attr_read......

阅读全文(2892) | 评论:0

Editplus文档标签栏(2007-04-05 11:54:00)

摘要:昨天Editplus想弄出来自动提示功能,最终未果。今天使用时却发现打开多个文档时editplus的原来下面的多个栏没有了,用习惯了直接用鼠标在各个文档间切换,现在不能,很不爽。自己找了半天,也无果。后来在网上搜,‘editplus 打开多个文件’,后来知道是标签栏的情况,又搜‘editplus 标签栏’,然后知道在View|Selector Location|Top,可是我的是中文版本的,在查看->工具栏/视图->文档标签栏 勾上就好了......

阅读全文(6711) | 评论:1

Integer also support several useful iter(2007-04-05 11:17:00)

摘要:3.times {print 'x '}
1.upto(5) {|i| print i, " "}
99.downto(95) {|i| print i, " "}
50.step(80,5) {|i| print i, " "} Integer also support several useful iterators. Class Numeric also provides the more general method step, which is more like a traditional for loop 即为:整型也支持迭代 结果如下:x x x 1 2 3 4 5 99 98 97 96 95 50 55 60 65 70 75 80 注意:求一个数的绝对值,在ruby和C中有不同方法:    ruby: num.abs              C:abs(num)......

阅读全文(1799) | 评论:0

Numbers of Standard Types in PR(2nd)(2007-04-05 10:48:00)

摘要:这是Programming Ruby(2nd)中的Charpter 5的第一个有关number的程序实例,如下: num=81
6.times do
puts "#{num.class}:#{num}"
num*=num
end     结果如下: Fixnum:81
Fixnum:6561
Fixnum:43046721
Bignum:1853020188851841
Bignum:3433683820292512484657849089281
Bignum:11790184577738583171520872861412518665678211592275841109096961 其中有Fixnum和Bignum,为什么?原因:机器指针可处理的定长整数. 大部分机器是31bit. 若运算结果超出Fixnum范围的话,自动将其变换为Bignum.之下是PR书上的一段原话:Ruby supports integers and floating-point numbers. Integers can be any length(up to a maximum determined by the amount of free memory on your system). Integers within a certain range (normally -2的30次方到2的30次方-1或者-2的62次方到2的62次方-1)are held internally in binary form and are objects of class Fixnum. Integers outside this range are stored in objets of class Bignum(currently implemented as a variable-length set of short integers). 自己又减去了一些东西,看看与原来的程序有何不同: num=81
6.times do
puts "#{num}"  去掉了{num.class},即不显示数类名:Fixnum和Bignum
num*=num
end 81
6561
43046721

阅读全文(1828) | 评论:0

原来如此(ruby中的文件打开即写入)(2007-04-04 16:18:00)

摘要:require "File" class File
  def File.open_and_process(*args)
    f=File.open(*args)
    yield f
    f.close()
  end
end #path='D:\RUBY\myproject\temp'
File.open_and_process("temp.txt") do |file|
  while line = file.gets
    puts line
  end
end  programming ruby(2nd) 中的打开文件的代码,正确。但是之前怎么着都是不对的。 后来试了一个语句:File.open("out.txt", "a") {|f| f.write("Hello")}在cmd下编译运行,通过。打开相应文件夹,已经生成了1KB的out文件,打开也已经写入了hello。可是为什么我的就不行呢? 后来两下对比,才知道:我的以temp文件命名的文件又自作主张地敲上了后缀.txt,这样的话整个文件名不是temp.txt,而是加上文本文件自身的后缀后变成temp.txt.txt,难怪找不到了。 可是,奇怪的是,为什么打印了两次? 注:打印两次是因为上面有一个require "File",而与定义类File中的一起执行文件打开操作。可是方法名又不相同,为什么要这样?还是有点不明白。......

阅读全文(3343) | 评论:0

Editplus支持ruby(2007-04-04 10:56:00)

摘要:之前的ruby一直在eclipse下编码,工作太多时,占内存,机子很慢。今天偶尔找到了‘三分钟让EditPlus支持ruby’的帖子,试了下,很好用。放在这里。链接如下:http://www.javaeye.com/topic/36632 自己在记录下好了: 1.从Editplus官方网站下载支持Ruby的扩展包
http://www.editplus.com/others.html 2.下载的包中有两个文件是语法文件(stx)与自动完成文件(acp)将这两个文件放到Editplus的安装目录 3.打开菜单中 工具->参数选择->文件(设置与语法)项,增加Ruby这种类型 4.设置一下文件扩展名,关联一下刚才下载的语法文件与自动完成文件 ......

阅读全文(2135) | 评论:0

ruby与数据结构,及Unit testing(2007-04-02 16:32:00)

摘要:ruby里面提供了丰富的方法,在对于array这个class时,提供了一些方法,使得这个array变成一个stack,queue或者dequeue,这样的方式比java灵活,使用java如何实现?用interface 这是不是即可理解为:我们不用在意或定义什么数据结构,而是用ruby中的方法即可了? 在programming ruby中container中,有个SongList.rb类及之前定义的Song.rb类,在TestSongList.rb中输入测试语言,检查是否正确: 其中ruby自带单元单元测试:Unit testing:ruby为我们提供了一个testing framework,在这个framework里面有2个比较重要的方法:

assert_equal:带2个parameters,判断这2个parameters是不是相等,假如不相等,产生failures

assert_nil:带1个parameter,判断这个parameter是不是nil,假如不等于nil,产生failures 什么是单元测试: 在软件测试过程中,通常是分两个阶段的。
因为我们知道,一个软件的开发,很可能是由多个程序员共同完成的,每人只做其中的一部分。所以,在测试的时候,首先要以各个功能模块为单位,进行基本的功能测试;
完成这一阶段(单元测试)后,还要把各个模块连接起来形成一个完整的软件系统,对整个系统进行的测试,就是集成测试。
通常,单元测试用于检验每一个模块功能的正确性;
系统测试用于检验系统功能正确性,以及系统的稳定性,也可以用于评估性能......

阅读全文(2383) | 评论:0