2013-04-13 11 views
69

Rubyで条件変数を設定しようとしています。変数がnilまたは空の場合(0の長さの文字列)、変数を設定する必要があります。私は次のものを思いついた:空またはnil値の文字列のテスト

variable = id if variable.nil? || (!variable.nil? && variable.empty?) 

それはうまくいくものの、私にはRubyのようには見えない。上記を表現するより簡潔な方法ですか?

+0

「Rubyの方法は、」あなたはNILSと空の混合物を持っている状態に入れないことであろう文字列。このデータを返す関数があれば、空の値を返すことができます。それは、 '' ''ではなく 'nil'を返さなければなりません。 – meagar

答えて

140

チェックイン評価がそのポイントに達する必要はありません。variable.nilは(short-circuitingのため)偽であることが保証されています。

これは十分なものでなければならない:それは偽だ場合

オブジェクトは、空の空白です:

variable = id if variable.nil? || variable.empty? 

あなたはRuby on Railsをで作業している場合は、Object.blank?はこの正確な問題を解決します、または空白文字列。たとえば、""," ",nil[]、および{}はすべて空白です。

+4

完璧な、それは私が必要だったものです( 'Object.blank')。 RubyとRailsは、それが単純なような禅で私を常に驚かせる。ありがとう! :) –

+0

この解決策は 'variable = 3 の場合は機能しません.p variable = 5 variable.nilなら? || variable @empty? ' –

+1

これは@RichardBrownが文字列変数であると予想しているところに、誤って整数を入れないと仮定します。 –

15
variable = id if variable.to_s.empty? 
40

Rails .blankにいる場合は?あなたが探している方法のようになります。

a = nil 
b = [] 
c = "" 

a.blank? #=> true 
b.blank? #=> true 
c.blank? #=> true 

d = "1" 
e = ["1"] 

d.blank? #=> false 
e.blank? #=> false 

だから、答えは次のようになります。

variable = id if variable.blank? 
関連する問題