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 のブール コンテキストで false っぽい値に評価されるオブジェクトはnil、 のシングルトン インスタンスと のシングルトン インスタンスのNilClass2つだけfalseですFalseClass他のすべてのオブジェクトは真の値に評価されます。

そのelse分岐を取得する場合は、 または のいずれかに評価するmyproxy 必要があります。nilfalse

実際に制御できるブール値が必要な場合は、case式を試して、 case subsumption operator をオーバーライドできますMyProxy#===

于 2010-01-28T07:46:43.913 に答える