Ruby 中有所谓的流程控制表达式,它们用来控制程序的运行方式,并且会接受一个真值或假值。 有些运算符可以用来产生真值或假值,它们被称为比较运算符。
主要有两种控制表达式,用来决定哪些代码会运行、哪些不会运行,也就是决定会执行哪个分支。
这两种分别是:if 表达式和 unless 表达式。
比较运算符用于比较值,并返回 true 或 false。
下面这些运算符要求被比较的两个值类型相同。
如果两个值的类型不同,编译器就会抛出错误。
下面是这些运算符的列表,以及它们给出 true 时的示例:
| 方法 | 描述 | 示例 |
|---|---|---|
| < | 小于 | 4 < 5 |
| <= | 小于或等于 | 4 <= 4 |
| > | 大于 | 3 > 1 |
| >= | 大于或等于 | 2 >= 2 |
与前面提到的运算符不同,相等和不等运算符可以用来比较任何类型的值。
== 运算符用来检查两个值是否相等,这也包括检查值的类型。
!= 的工作方式相同,但如果两个值不相等它会返回 true,相等则返回 false。
下面是相等和不等运算符的列表,以及它们给出 true 时的示例:
| 方法 | 描述 | 示例 |
|---|---|---|
| == | 等于 | 4 == 4 |
| != | 不等于 | 5 != 4 |
组合比较运算符(有时称为飞船运算符)是一种特殊的比较运算符。
它的特殊之处在于,它返回的不是真值或假值,而是一个数字。
它写作 <=>,用来比较两个值。
如果左边的值大于右边的值,它会返回 1;如果左边的值小于右边的值,返回 -1;如果两个值相等,返回 0。
1 <=> 2 # => -1
2 <=> 2 # => 0
3 <=> 2 # => 1
if 语句if 语句用来检查给定条件是“真值”还是“假值”。
如果条件为真,if 语句内部的代码就会运行。
if 语句以 end 关键字结尾。
value = 1
if value == 1
"1 is equal to 1"
end
# => "1 is equal to 1"
if value > 2
"1 is greater than 2"
end
# => nil
unless 语句unless 语句的工作方式与 if 语句非常相似,但它会在条件为假时运行 unless 语句内部的代码。
value = 1
unless value == 1
"1 is not equal to 1"
end
# => nil
unless value > 2
"1 is not greater than 2"
end
# => "1 is not greater than 2"
else 语句else 语句可以和 if 语句一起使用。
如果 if 分支没有执行,就会执行 else 语句。
value = 1
if value == 1
"1 is equal to 1"
else
"1 is not equal to 1"
end
# => "1 is equal to 1"
if value > 2
"1 is greater than 2"
else
"1 is not greater than 2"
end
# => "1 is not greater than 2"
elsif 语句可以和 if 语句一起使用。
如果 if 分支没有执行,并且 elsif 语句的条件为真,就会执行 elsif 语句。
elsif 语句可以串联起来,第一个为真的条件会被执行。
if 语句末尾也可以加上一个 else 语句,如果前面所有语句的条件都不为真,它就会运行。
value = 1
if value == 0
"1 is equal to 0"
elsif value > 2
"1 is greater than 2"
else
"1 is not equal to 0 and 1 is not greater than 2"
end
# => "1 is not equal to 0 and 1 is not greater than 2"
if 和 unless 语句也可以用作[后缀][if-as-suffix],当你想在条件为真时运行单行代码时,这很有用。 做法是把 if 或 unless 语句放在你想运行的代码后面。
value = 1
"1 is equal to 1" if value == 1
# => 1 is equal to 1
"1 is not equal to 1" unless value == 1
# => nil