2012-03-02 8 views
1

はRubyで次のコードを書くための簡単な方法があります:定義済みのRubyコードを短くしますか?

if defined?($servlet_context) then true 
else false 
end 
+0

これは** defined?($ servlet_context)**とまったく同じです。 if-elseブロックでもっとやりたいですか? – iltempo

+0

@iltempo:いいえ、まったく同じではなく、 'defined? '演算子はあなたにブール値を与えません。 –

+0

@mu。私は逃しました。 – iltempo

答えて

8

defined? operator evaluates to a string or nil

defined?オペレータが(任意の式であることができる)は、その引数が定義されていない場合、それ以外の場合は、その引数の説明を返しnil返します。

真実を欲しがっているのなら、defined?($servlet_context)となります。しかし、絶対にブール値が必要な場合は、ダブルバングキャストを使用できます。

!!defined?($servlet_context) 
0

defined?($servlet_context)はまったく同じ効果があります。

また、ルビでは不要なので、これを短くする最も簡単な方法は - 'then'を削除することです。

+0

まったく同じ効果ではない、*ほぼ同じ効果。 –