条件判断语句主要有以下三种:
- if 语句
- unless 语句
- case 语句
Ruby 中的真假值:
- 真:false、nil 以外的所有对象
- 假:false、nil
在 Ruby 中还有个约定俗成的规则,为了使程序更容易理解,返回真假值的方法都要以 ? 结尾。建议大家在写程序时也遵守这个规则。

逻辑运算符
逻辑运算符:
- &&
- ||
- !
在 Ruby 中,还有与 &&、||、! 意思相同,但优先级略低的逻辑运算符 and 、 or 、 not。
if 语句
if 语句是最基本的条件判断语句
if 条件 1 then
处理 1
elsif 条件 2 then
处理 2
elsif 条件 3 then
处理 3
else
处理 4
end
注意,是 elsif 而不是 elif
a = 10
b = 20
if a > b
puts "a 比 b 大"
elsif a < b
puts "a 比 b 小"
else
puts "a 与 b 相等"
end
unless 语句
unless 与 if 相反,当条件为假时执行处理
unless 条件 then
处理
end
case 语句
类比 C 中 switch … case ….
case 比较对象
when 值 1 then
处理 1
when 值 2 then
处理 2
when 值 3 then
处理 3
else
处理 4
end
tags = [ "A", "IMG", "PRE" ]
tags.each do |tagname|
case tagname
when "p", "A", "I", "B", "BLOCKQUOTE" then
puts "#{tagname} has child."
when "IMG", "BR" then
puts "#{tagname} has no child"
else
puts "#{tagname} cannot be used."
end
end
when 后可以带多个值,并且后面的 then 是可以省略的。
array = [ "a", 1, nil ]
array.each do |item|
case item
when String then
puts "item is a String."
when Numeric then
puts "item is a Numeric."
else
puts "item is something."
end
end
与上一个例子不同的是,本例中的 when 实际上并不是直接判断传过来的字符串,而是先查找该对象属于哪个类,然后再根据这个类的信息来进行条件判断。
case 语句在判断与 when 指定的值是否相等时,实际上是使用 === 运算符来判断的。左边是数值或者字符串时,=== 与 == 的意义是一样的,除此以外,=== 还可以与 =~ 一样来判断正则表达式是否匹配,或者判断右边的对象是否属于左边的类等等。

拓展:对象的同一性
所有的对象都有标识和值。标识(ID)用来表示对象的同一性。Ruby 中所有对象都是唯一的,对象的 ID 可以通过 object_id(或者 _ id _ )方法获得

Object 类定义的方法中有一个为 eql? 方法,此方法比较时会很严格

比较数值是否相等时用 == 就行,若是要求比较严格,则用 eql? 方法,Ruby 中散列中内部中比较键就是使用了 eql?
