ruby学习笔记(2)

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

=============================

原文地址:https://www.cnblogs.com/cly84920/p/4426923.html