Posts

Showing posts from December, 2005

Ruby语言经典代码讲座:理解方法

『》』理解方法 『《』我们的实例代码如下: class Fixnum def & n self + n end end i=2+3 p i i=2.+3 p i i=2.+ 3 p i i=2.+(3) p i i=2&3 p i 说明: (一)Ruby的所有事情都是类的实例; (二)Ruby的所有动作都是实例的方法; (三)Ruby的方法是通过点加方法名或者方法名进行调用; (四)Ruby的方法参数表达是通过空格加参数,或者通过参数前后加上圆括号(),其中二个以上参数都是通过逗号分开; (五)Ruby的方法返回值是方法的最后语句结果;

Ruby语言比较讲座:方法<< 和 方法+

我们代码实例为: class Fixnum def to_c m = '' m << self end end string1 = "中国 " string2 = "您好!" fixnum1 = 97 puts string1 << string2 puts string1 puts string1 << fixnum1 puts string1 puts "-------------------------" string1 = "中国 " string2 = "您好!" fixnum1 = 97 puts string1 + string2 puts string1 #string1 = string1 + fixnum1 #error puts string1 + fixnum1.to_c puts string1 我们代码输出结果: 中国 您好! 中国 您好! 中国 您好!a 中国 您好!a ------------------------- 中国 您好! 中国 中国 a 中国

Ruby语言重要的技术查询资料

http://www.zenspider.com/Languages/Ruby/QuickRef.html http://www.joelh.de/selfruby/db/show_kat.php

Ruby语言经典代码讲座:类Array 方法inject

『》』Ruby语言经典代码讲座:类Array 方法inject 块过程 『《』我们的代码如下: class Array def injectX(n,m) self.each do |iValue| n = yield(n, iValue, m) end n end def sum self.inject(0) do |n, values| n+values end end def product m=1 inject(m) { |n, values| n*values } end def doubleResult x self.injectX(0,x) do |n, value, m| m*n+value end end end puts [ 1, 2, 3, 4, 5 ].sum # 15 puts [ 1, 2, 3, 4, 5 ].doubleResult(2) # 57 puts [ 1, 2, 3, 4, 5 ].product # 120 说明: #方法inject的参数(0)与 块过程 内的变量无关; #方法inject必须带上后面的块过程; #在 块过程 内|...|的变量个数一定要和方法inject内方法yield()的参数个数相同; #在 块过程 内|...|的变量顺序一定要和方法inject内方法yield()的参数顺序相同; #在 块过程 内|...|后面的语句被方法inject内方法yield()调用; #方法inject是类Array的一个方法; #在 块过程 内|...|的变量可以被理解为方法inject内方法yield()的参数;

Ruby语言专用工具讲座:Exerb

Image
『》』Exerb是什么软件? 『《』Exerb是把文件.rb(或者说软件)转变为Windows环境下可执行文件.exe。 『》』Exerb软件在Windows下是如何安装的? 『《』下载当前版本3.2.0: 在这里 。 。。。解压使用软件: 7-zip 。。。解压到目录:d:\MyRuby\exerb-3.2.0 。。。执行安装命令: d:\MyRuby\exerb-3.2.0>ruby install.rb config 输入回车键。图示(使用Exerb2.6.6版本,下同): d:\MyRuby\exerb-3.2.0>ruby install.rb install 输入回车键。图示: 『》』Exerb软件在Windows下是如何使用的? 『《』创建一个文件d:\MyRuby\hello.rb。图示: 。。。执行安装命令: d:\MyRuby>ruby -r exerb/mkrbc hello.rb 输入回车键。图示: d:\MyRuby>exerb.rb hello.rbc 输入回车键。 这时,我们得到了一个文件d:\MyRuby\hello.exe。图示: 。。。运行文件命令: d:\MyRuby>hello 输入回车键。图示: 『》』Exerb的软件目录在哪里? 『《』Exerb的软件目录: 在这里 。 『》』Exerb的资料在哪里? 『《』Exerb的资料: 在这里 。

Ruby语言正则表达式(regular expression )问题

『》』Ruby语言正则表达式(regular expression )问题 『《』中文无法搜索,如下二组代码显示不同的结果: str = "上海是我自己的故乡。绍兴是我父亲的故乡,也是我的。。" str =~ /(我自己)(我父亲)/ $~.to_a.each do |item| p item # => nil end "foobarbaz" =~ /(foo)(bar)/ p $~[0..20] # => ["foobar", "foo", "bar"] 。。。我以为,这是一个错误。在Eclipse插件 QuickREx 也是不行。 『《』在Eclipse插件 QuickREx 使用正则表达式和Ruby语言使用不同: str = "上海是我自己的故乡,绍兴是我父亲的故乡,也是我的。。" str =~ /我自己|我父亲/ $~.to_a.each do |item| puts item # => ["我自己"] ruby # => ["我自己", "我父亲"] eclipse QuickREx end /foo|bar/ =~ "foobarbaz" p $~[0..20] # => ["foo"] ruby # => ["foo", "bar"] eclipse QuickREx 。。。

Ruby语言比较讲座:单引号和双引号的比较

Ruby语言比较讲座 『》』单引号和双引号的比较 『《』代码实例之一: puts '第一行\\n 还是第一行' puts "第一行\\n 还是第一行" puts '第一行\n 还是第一行' puts "第一行\n开始换行进入第二行" name="Ruby" puts "我的名字叫#{name}" puts '我的名字叫#{name}' puts "我的名字叫" + name puts '我的名字叫' + name 。。。输出结果: 第一行\n 还是第一行 第一行\n 还是第一行 第一行\n 还是第一行 第一行 开始换行进入第二行 我的名字叫Ruby 我的名字叫#{name} 我的名字叫Ruby 我的名字叫Ruby

Ruby语言最重要的圣经

『》』Ruby语言最重要的圣经 『《』 Programming Ruby (1nd. Ed.) 。。。 Programming Ruby (2nd. Ed.)

Ruby语言的第一本入门英文教材

『》』Ruby语言的第一本入门英文教材 『《』Chris Pine:"Learn to Program": 英文 『》』Ruby语言的第二本入门英文或者德文译本教材 『《』Daniel Carrera:"Learning Ruby": 英文 德文译本

Ruby语言比较讲座:方法和过程块

『》』什么是块过程(proc/procs)? 『《』由do和end(或{和})组成的代码,称之为块过程。 『》』Ruby语言的方法(method/methods)和过程块(proc/procs)的区别 『《』下面我们说明方法和过程块的区别。在Ruby语言中,我们不能把方法名作为参数传递给另一个方法(但是我们可以把过程块名作为参数传递给方法),并且方法不能够返回其它方法(但是它们可以返回过程块)。之所以如此简单。是因为过程块都是对象,而方法不是。 In particular, you can't pass methods into other methods (but you can pass procs into methods), and methods can't return other methods (but they can return procs). This is simply because procs are objects; methods aren't. 下面是实例代码: def doSelfImportantly someProc puts 'Everybody just HOLD ON! I have something to do...' someProc.call puts 'Ok everyone, I\'m done. Go on with what you were doing.' someProc end sayHello = Proc.new do puts 'hello' end myproc = doSelfImportantly sayHello puts '----------------------------' myproc.call 『》』什么是块(block/blocks)? 『《』在do和end(或{和})之间的代码,称之为块。

Ruby语言的习惯约定

『》』Ruby语言的习惯约定 『《』在Ruby中,函数的最后一条语句如果是表达式,那么它就是返回值。 。。。在Ruby中,全局变量以$开头,静态变量=类变量以@@开头,实例变量以@开头。 。。。在Ruby中,在字符串中插入变量以#开始。 。。。在Ruby中,每个函数可以不光带有参数,还可以在参数后面带一个代码块。 。。。在Ruby中,代码块一般是以单行{}形式表达的或多行以do end来包围起来的。 。。。在Ruby中,每个方法必须返回值,即使是nil也要。 。。。在Ruby中,变量名称不容许以大写字母开始。

Ruby语言的设计思想

『》』Ruby语言的设计思想 『《』在Ruby中,任何事物都是类。 。。。在Ruby中,人们可以用多种方式来完成同一件事情。 。。。在Ruby中,任何事物尽可能简单化。 。。。在Ruby中,软件包统一化的管理。

中文Ruby人

中文Ruby人 2005.12.12