如何制作在条件表达式中评估为false的Ruby变量

时间:2010-01-28 07:38:33

标签: ruby syntax conditional proxy-classes

我想在条件句中使用时将我的变量(代理对象)评估为false。我知道我可以用.nil?甚至var == nil但我认为这还不够好。我正在尝试做的是:

if myproxy # not only myprroxy.nil? or myproxy == nil, but just that
  # myproxy's backend object is not nil
else
  # myproxy's backend object is nil
end

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

在Ruby中布尔上下文中唯一评估为false-ish值的两个对象是nilNilClassfalse的单例实例,FalseClass的单例实例1}}。 每个其他对象的计算结果为真值。

如果您希望采用else分支,那么myproxy 必须评估为nilfalse

如果你想要实际控制某个boolean-ish,你可以尝试case表达式并覆盖case subsumption operator MyProxy#===