1)ruby的语句可以换行。这一点和js不同,js中换行视作一行语句结束,相当于在句尾加了“;”号,如果一条语句换行写,会报错。ruby中语句可以换行,而且为了提高可读性,bury鼓励不使用“;”号,希望一行语句只写在一行里,可以的话,不要在同一行里写多条语句。
2)ruby中if,while等语句都不带{}号,相反,一些方法例如each则会带{},习惯了C系的语法,看着还真不习惯。总之因为不带{},所以在写if等语句时,一定要注意缩进,不然程序没法看了。
3)ruby中空格不能随便乱加,如果要加空格让程序好看一点,一定要注意讲求平衡。例如:
==============================
a+b
a + b 的效果相同
a +b 效果却等同于 a(+b),a()方法传入+b作为参数
==============================
4) to_i 方法。字符串转换成数字类型。相当于js中的parseInt()。
5) 布尔型转换。 在ruby中,布尔型也是为true和false,同其它语言一样,其它类型的值也能和布尔型进行隐式转换。但和大多数语言不同的是,在ruby中,false和nil以外所有的对象都为真,false和nil为假。包括0,在ruby中其实都是相当于真,这点和一般的语言不大一样。另外,ruby是个支持谓语的语言,鼓励返回布尔型数据的方法命名时加上“?”,这么做也是为了提高可读性。例如 isNumber? isGood?
6) 条件判断。 在ruby中,条件判断有一点很奇怪的是else if的写法,既不是“else if”也不是“elseif”,是“elsif”,汗,为啥把那个e给省掉了?看着多别扭啊。。。
============================
a = ARGV[0]
b = ARGV[1]
if a > b then
print "a > b"
elsif a == b then
print "a = b"
else
print "a < b"
end
============================
除了if,ruby中还提供了unless方法,语法和if一样,但和if正相反的是,unless中的条件不成立时,才会执行。
7) case语句。 ruby 中的case语句相当于其它语言中常用的switch,但ruby中的格式奇怪一点,功能也更强一点:
=============================
=begin
这是一般的用法
=end
tags = ["A","IMG","PRE"]
tags.each{ | tagname |
case tagname
when "P","A","I","B" then #bury这里可以写多个参数,用逗号隔开
print tagname,"has child.\n"
when "IMG","BR" then
print tagname,"has no child.\n"
else
print tagname,"cannot be used.\n"
end
}
=begin
when 里还可以放 String,Numberic之类的类型名,判断类型
=end
array = ["aa",1,nil]
item = array[0]
case item
when String
puts "item is a String."
when Numberic
puts "item is a Numeric."
else
puts "item is a something."
end
=begin
when 里还可以放正则表达式
=end
case line
when /^From:/i
print "找到寄件人了。\n"
when /^To:/i
print "找到收件人了。\n"
else
print "啥也没找到。"
end
=============================
需要注意的是,ruby中的when后面的条件不会自动转换类型,比如说1和"1"是不一样的。另外,很重要的一点是,when后面的语句不需要加break,这和C系的switch是不一样的。
8) ===。ruby中也有===号,但它和js中的===并不相同,ruby中的===左边可以是数字、字符串,也可以是正则,还可以是类型。
=============================
p (2 === 2) #=> true
p /zz/ === "zyzzy" #=> 2
p String === "xyzzy" #=>true
=============================