Ruby 比较运算符
比较运算符 **比较** 两个值,并返回一个 布尔值 结果(true
或 false
)。例如,
a = 3
b = 2
puts a > b
# Output: true
在这里,我们使用 >
比较运算符来检查 a(值为 3)是否大于 b(值为 2)。
因为 3 大于 2,所以输出为 true
。
注意:在上面的例子中,a > b
被称为 **布尔表达式**,因为它计算结果为布尔值(true
或 false
)。
常用比较运算符
运算符 | 含义 | 示例 |
---|---|---|
== |
等于 | 3 == 5 (输出:false ) |
!= |
不等于 | 3 != 4 (输出:true ) |
> |
大于 | 4 > 4 (输出:false ) |
< |
小于 | 3 < 3 (输出:false ) |
>= |
大于或等于 | 4 >= 4 (输出:true ) |
<= |
小于或等于 | 3 <= 3 (输出:true ) |
<=> |
组合比较(返回 -1、0 或 1) | 5 <=> 10 (输出:-1 ) |
1. Ruby 等于运算符
等于运算符 ==
的求值结果为
true
- 如果操作数的值相等。false
- 如果操作数的值不相等。
注意:在 Ruby 中,==
是比较运算符,而 =
是赋值运算符。如果你错误地使用 =
代替 ==
,可能会得到意外的结果。
示例
num1 = 10
num2 = 15
num3 = 10
string_num = "10"
# Compare numbers with numbers
puts num1 == num2 # false
puts num1 == num3 # true
# Compare number with string
puts num1 == string_num # false
此程序的工作原理如下:
表达式 | 结果 | 原因 |
---|---|---|
num1 == num2 |
false |
num1 和 num2 的值不同。 |
num1 == num3 |
true |
num1 和 num3 的值相同。 |
num1 == string_num |
false |
num1 和 string_num 属于不同的数据类型,即使它们的值看起来相似。 |
比较不同类型
在前面的示例中,使用 ==
运算符比较数字 10 和字符串 "10"
的结果是 false
,尽管这两个值看起来相似。
然而,在某些情况下,比较不同类型但数值相似的数据会得到 true
。例如,
# Comparing identical integer and float values
puts 4 == 4.0
# Output: true
虽然 4 是一个 Integer
(整数),而 4.0 是一个 Float
(浮点数),但 Ruby 认为它们是相等的,因为它们的数值相同。
2. 不等于运算符
不等于运算符 !=
的求值结果为
true
- 如果操作数的值不相等。false
- 如果操作数的值相等。
示例
num1 = 10
num2 = 15
num3 = 10
string_num = "10"
# Compare numbers with numbers
puts num1 != num2 # true
puts num1 != num3 # false
# Compare number with string
puts num1 != string_num # true
注意: !=
运算符返回的结果与 ==
运算符相反。
3. 大于运算符
大于运算符 >
的返回值
true
- 如果左操作数大于右操作数。false
- 如果左操作数不大于右操作数。
示例
num1 = 10
num2 = 15
# Left operand is smaller
puts num1 > num2 # false
# Left operand is greater
puts num2 > num1 # true
# Both operands are equal
puts num1 > 10 # false
4. 大于等于运算符
大于或等于运算符 >=
的返回值
true
- 如果左操作数大于或等于右操作数。false
- 如果左操作数小于右操作数。
示例
num1 = 10
num2 = 15
# Left operand is smaller
puts num1 >= num2 # false
# Left operand is greater
puts num2 >= num1 # true
# Both operands are equal
puts num1 >= 10 # true
5. 小于运算符
小于运算符 <
的返回值
true
- 如果左操作数小于右操作数。false
- 如果左操作数不小于右操作数。
示例
num1 = 10
num2 = 15
# Left operand is smaller
puts num1 < num2 # true
# Left operand is greater
puts num2 < num1 # false
# Both operands are equal
puts num1 < 10 # false
6. 小于等于运算符
小于或等于运算符 <=
的返回值
true
- 如果左操作数小于或等于右操作数。false
- 如果左操作数大于右操作数。
示例
num1 = 10
num2 = 15
# Left operand is smaller
puts num1 <= num2 # true
# Left operand is greater
puts num2 <= num1 # false
# Both operands are equal
puts num1 <= 10 # true
7. 组合比较运算符
组合比较 运算符 <=>
返回
- -1,如果左操作数小于右操作数。
- 1,如果左操作数大于右操作数。
- 0,如果两个操作数相等。
注意: <=>
运算符也称为 **三向比较运算符**。
示例
num1 = 10
num2 = 15
# Left operand is smaller
puts num1 <=> num2 # -1
# Left operand is greater
puts num2 <=> num1 # 1
# Both operands are equal
puts num1 <=> 10 # 0
Ruby 逻辑运算符
逻辑运算符通过求值 boolean 表达式来返回一个 boolean 值。例如,
x = 5
y = 3
puts (x < 6) && (y < 5)
# Output: true
这里,&&
是逻辑运算符 **AND**(与)。
因为布尔表达式 x < 6
和 y < 5
都为 true
,所以使用 &&
运算符计算它们也得到 true
。
常用逻辑运算符
运算符 | 语法 | 描述 |
---|---|---|
&& |
expression1 && expression2 |
仅当 expression1 和 expression2 都为 true 时为 true |
|| |
expression1 || expression2 |
当 expression1 或 expression2 中至少有一个为 true 时为 true |
! |
!expression |
如果 expression 为 true ,则为 false ;如果 expression 为 false ,则为 true 。 |
1. 逻辑与运算符(&&)
逻辑 AND 运算符 &&
当两个表达式都为 true
时返回 true
。例如,
x = 2
# Both expressions are true
puts (x < 4) && (3 >= x) # true
# Only one expression is true
puts (x <= 4) && (x == 3) # false
# Both expressions are false
puts (x > 4) && (x == 3) # false
程序工作方式如下:
表达式 | 结果 | 原因 |
---|---|---|
(x < 4) && (3 >= x) |
true |
两个表达式都为 true 。 |
(x <= 4) && (x == 3) |
false |
表达式 x == 3 为 false 。 |
(x > 4) && (x == 3) |
false |
两个表达式都为 false 。 |
2. 逻辑或运算符( || )
逻辑 OR 运算符 ||
当至少有一个表达式为 true
时返回 true
。例如,
x = 2
# Both expressions are true
puts (x < 4) || (3 >= x) # true
# Only one expression is true
puts (x <= 4) || (x == 3) # true
# Both expressions are false
puts (x > 4) || (x == 3) # false
程序工作方式如下:
表达式 | 结果 | 原因 |
---|---|---|
(x < 4) || (3 >= x) |
true |
两个表达式都为 true 。 |
(x <= 4) || (x == 3) |
true |
表达式 x <= 4 为 true 。 |
(x > 4) || (x == 3) |
false |
两个表达式都为 false 。 |
3. 逻辑非运算符( ! )
逻辑 NOT 运算符 !
当指定表达式为 false
时返回 true
,反之亦然。例如,
x = 2
# NOT on true
puts !true # false
# NOT on false
puts !false # true
# Comparison examples
puts !(x > 3) # true
puts !(x == 2) # false
程序工作方式如下:
表达式 | 结果 | 原因 |
---|---|---|
!true |
false |
! 将 true 的值反转为 false 。 |
!false |
true |
! 将 false 的值反转为 true 。 |
!(x > 3) |
true |
! 将 (x > 3) 的 false 值反转为 true 。 |
!(x == 2) |
false |
! 将 (x == 2) 的 true 值反转为 false 。 |
常见问题
在 Ruby 中,我们使用比较运算符来比较两个值并找出结果的布尔值(true
或 false
)。例如,
# Less than operator
puts 4 < 5
# Output: true
在上面的例子中,我们使用 <
运算符来获取条件 4 < 5
的布尔值。
另一方面,我们使用逻辑运算符对 boolean 表达式执行逻辑运算。例如,
# Logical NOT
puts !(4 < 5)
# Output: false
这里,表达式 4 < 5
为我们提供了布尔值 true
。然后 !
运算符作用于此布尔值并将其反转为 false
。