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

Mar*_*ins 5 ruby casting boolean

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

2.0.0-p451 :021 > !nil
 => true

2.0.0-p451 :024 > !!3
 => true
Run Code Online (Sandbox Code Playgroud)

因此,实际上,!!将任何内容解析为其布尔值。有没有更干净的方法来做到这一点?无需使用!运算符。

SHS*_*SHS 5

不,!!这是最干净的方法。

但是,如果您使用 Rails,则可以查看object.present?. false它针对以下所有情况返回:

false
nil
""
[]
{}
Run Code Online (Sandbox Code Playgroud)

最后三个返回true!!但将返回falsepresent?