Programming Ruby中文版
原作名:Programming Ruby
ISBN:9787121038150
作者:[美]DaveThomas
译者:孙勇 / 姚延栋 / 张海峰
出版社:电子工业出版社
出版时间:2007-3
评价:☆☆☆
大概看了十几个小时的样子,后面基本没看,急着搞rails开发,只对Ruby有些简单的了解就好,主要还是要看《Web开发敏捷之道:应用Rails进行敏捷Web开发》。
Ruby中单引号和双引号对字符串处理和PHP类似,单引号一般会直接输出引号中的字符串,而双引号会转义一些字符串,例如:/n;或者是内插表达式,例如:#{表达式}。
全局变量使用美元符号($)为前缀,而实例变量以“at”(@)符号开始。类变量以两个“at”(@@)符号开始。
在其他语言中,nil或null的概念是指“没有对象”。在Ruby中,这是不一样的:nil是一个对象,与别的对象一样,只不过它是用来表示美元任何东西的对象。
Ruby是使用end关键字来表明程序体的结束,并不是像其他语言使用花括号。例如:
while line = gets
puts line.downcase
end
initialize方法是Ruby的构造函数。
Ruby中使用大括号(<
)表示继承,例如:
class KaraokeSong < Song
表示类KaraokeSong是Song的子类。
用斐波那契数列的例子说明并行赋值:
def fib_up_to(max)
i1, i2 = 1, 1
while i1 <= max
yield i1
i1, i2 = i2, i1 + i2 # 并行赋值
#将i2的值赋予给i1 在同时将i1+i2的值赋予给i2
end
end
fib_up_to(1000) {|f| print f, " " }
Ruby中方法参数的括号是可选的,一般的惯例是,当方法有参数时则使用括号,否则即忽略它们。
你希望传入可变个数的参数,或者像用一个形参接收多个参数,在参数名前放置一个星号(*)即可。
每个被调用的方法都会返回一个值。方法的值,是在方法执行中最后一个语句执行的结果。return的返回值是其参数的值。如果不需要return就省略之,这是Ruby的惯用技法。(PS:这个特性可以让代码写得很简单,不过在同时,代码的理解难度提高了)
Ruby中a=a+2可以写成a+=2,但是Ruby不支持其他语言中的自加(++)和自减(–)运算符。
Ruby对真值的定义很简单:任何不适nil或者常量false的值都为真。然而数字0不被解释为假值,长度为0的字符串也不适假值。
switch在Ruby中被case替代,而case被then替代,default则被else替代,例如:
case year
when 1850..1889: "Blues"
when 1890..1909: "Ragtime"
when 1910..1929: "New Orleans Jazz"
else
end