逻辑运算符用于构建更复杂的条件语句。它们帮助我们根据多个条件进行判断,从而执行相应的代码块。Ruby 中有三种主要的逻辑运算符:&&
(与)、||
(或)和 !
(非)。下面我们来详细探讨这些逻辑运算符。
与运算符 &&
&&
运算符用于检查两个条件是否都为真。只有当两个操作数都是真时,整个表达式才为真。
x = 10 y = 5 puts (x > 0 && y < 10) ? "条件成立" : "条件不成立" # 输出: 条件不成立
在这个例子中,尽管 x > 0
是真的,但 y < 10
是假的,所以整个表达式 (x > 0 && y < 10)
为假,输出为“条件不成立”。
短路求值
&&
运算符具有短路求值特性。这意味着如果第一个操作数为假,则不会评估第二个操作数。这可以用来避免错误:
puts (nil && 10/0) # 不会抛出除零异常,因为第一个操作数是 nil puts (true && 10/0) # 抛出除零异常,因为第一个操作数是 true
或运算符 ||
||
运算符用于检查至少一个条件为真。只要有一个操作数为真,整个表达式就为真。
x = 10 y = 5 puts (x < 0 || y > 10) ? "条件成立" : "条件不成立" # 输出: 条件不成立
在这个例子中,尽管 x < 0
是假的,但 y > 10
也是假的,所以整个表达式 (x < 0 || y > 10)
为假,输出为“条件不成立”。
短路求值
||
运算符也具有短路求值特性。这意味着如果第一个操作数为真,则不会评估第二个操作数。这可以用来提供默认值:
puts (nil || "默认值") # 输出: 默认值 puts (true || "默认值") # 输出: true
非运算符 !
!
运算符用于对布尔值取反。它将真变为假,将假变为真。
x = 10 puts (!x.nil?) # 输出: true puts (!x.zero?) # 输出: true
在这个例子中,x
的值为 10,不是 nil
,也不是 0,所以 !x.nil?
和 !x.zero?
都为真。
结合使用逻辑运算符
你可以结合使用这些逻辑运算符来创建复杂的条件表达式。例如:
age = 30 has_license = false puts ((age >= 18 && age <= 65) || has_license) ? "符合条件" : "不符合条件" # 输出: 符合条件
在这个例子中,尽管 age
在 18 到 65 之间,但 has_license
为假,不过由于 (age >= 18 && age <= 65)
为真,整个表达式仍然为真,输出为“符合条件”。
嵌套条件语句
你也可以将逻辑运算符嵌套在条件语句中以实现更复杂的功能:
-- -------------------- ---- ------- ----- - -- ----- - ---- -- ----- - -- -- ------ -- ---- -- ----- -- ----- ---- ---- ---- ---- ----- --- - --- --
在这个例子中,score > 80
为真,且 (level == "初级" || level == "中级")
也为真,因此整个条件为真,输出为“通过”。
通过理解并灵活运用这些逻辑运算符,你可以在 Ruby 程序中实现复杂的条件判断逻辑。