在Ruby中将任何内容转换为布尔值

5

在irb中玩耍时,我注意到你可以将任何东西转换为Ruby中的布尔值,例如:

2.0.0-p451 :021 > !nil
 => true

2.0.0-p451 :024 > !!3
 => true

实际上,!! 将任何内容转化为其对应的布尔值。有没有更简洁的方法来完成这个操作?而不使用 ! 运算符。


1
不,没有更好的方法去做这件事。但通常,你并不真的需要它。 - Marek Lipka
1
@MarekLipka 这取决于我们所谓的“cleaner”是什么http://ruby-doc.org/core-2.2.0/TrueClass.html#method-i-26 - Aleksei Matiushkin
@mudasobwa 你说得对。这也很好。 :) - Marek Lipka
1
你可以使用 ! _方法_:nil.!3.!.!。 :3 - cremno
@cremno 他所做的是:!nil 只是 nil.! 的语法。 - Marek Lipka
1个回答

5
不,!! 是最简洁的方法。
如果您正在使用Rails,则可以查看object.present?。它对以下所有内容返回false:
false
nil
""
[]
{}

最后三个使用 !! 会返回 true,但使用 present? 会返回 false

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接