gpt4 book ai didi

ruby - Ruby 中的 If block 中的 "Or"

转载 作者:数据小太阳 更新时间:2023-10-29 08:39:37 33 4
gpt4 key购买 nike

所以我正在为学校编写一个 Ruby 程序,如果某个值是 1 或 3,则将 bool 值更改为 true,如果是 0 或 2,则更改为 false。由于我有 Java 背景,所以我认为这段代码应该有效: if n == 1 || n == 3

但事实并非如此。所以我的问题是是否可以在 Ruby 的 If block 中使用“或”表达式?我知道我目前的情况可以通过以下方式轻松解决:

if n == 0
t_o_f = false
elsif n == 1
t_o_f = true

等等。但我想知道以后是否可以在 If block 中使用 Or。

最佳答案

是的,任何表达式都可以用在 if 条件中,包括那些使用 ||(逻辑或)运算符的表达式。

与 Java 一样,Ruby 的 || 运算符短路。也就是说,如果左侧为真,则不评估右侧。

惯用的 ruby​​ 使用 postfix if 作为单行代码:

puts "Yes" if n == 4 || n == 5

不过,如果行很长,请避免后缀,并将其分成多行:

if n == 4 || n == 5
puts "This is a big long string to be output....................."
end

那是因为 postfix if 在长行的末尾可能会在视觉上丢失。

可以使用带有前缀if的单行代码,但这并不常见:

if n == 4 || n == 5 then puts "foo" end

或者,也许:

if n == 4 || n == 5 ; puts "foo" ; end

如果浓缩成一行,这真的是多行;分号充当换行符。

在测试多个条件时,有时使用 Array#include? 可能很有值(value):

puts "foo" if [4, 5].include?(n)

只有两个条件的这个值不是那么大。对于三个或更多,它读起来很好。

关于ruby - Ruby 中的 If block 中的 "Or",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12958471/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com