4

我想让我的变量(代理对象)在条件句中使用时评估为 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

有任何想法吗?

4

1 回答 1

4

在 Ruby 中,在布尔上下文中评估为假值的唯一两个对象是nil的单例实例NilClassfalse的单例实例FalseClass每个其他对象都评估为真实值。

如果您希望采用该else分支,则myproxy 必须评估为nilor false

如果你想要一些你可以实际控制的布尔值,你可以尝试一个case表达式并覆盖 case subsumption operator MyProxy#===

于 2010-01-28T07:46:43.913 回答