博文
很奇妙的赋值 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]......
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下,打印出字符......
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']#加入列名
......
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......
Editplus文档标签栏(2007-04-05 11:54:00)
摘要:昨天Editplus想弄出来自动提示功能,最终未果。今天使用时却发现打开多个文档时editplus的原来下面的多个栏没有了,用习惯了直接用鼠标在各个文档间切换,现在不能,很不爽。自己找了半天,也无果。后来在网上搜,‘editplus 打开多个文件’,后来知道是标签栏的情况,又搜‘editplus 标签栏’,然后知道在View|Selector Location|Top,可是我的是中文版本的,在查看->工具栏/视图->文档标签栏 勾上就好了......
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)......
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
原来如此(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中的一起执行文件打开操作。可是方法名又不相同,为什么要这样?还是有点不明白。......
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.设置一下文件扩展名,关联一下刚才下载的语法文件与自动完成文件 ......
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
什么是单元测试:
在软件测试过程中,通常是分两个阶段的。
因为我们知道,一个软件的开发,很可能是由多个程序员共同完成的,每人只做其中的一部分。所以,在测试的时候,首先要以各个功能模块为单位,进行基本的功能测试;
完成这一阶段(单元测试)后,还要把各个模块连接起来形成一个完整的软件系统,对整个系统进行的测试,就是集成测试。
通常,单元测试用于检验每一个模块功能的正确性;
系统测试用于检验系统功能正确性,以及系统的稳定性,也可以用于评估性能......