Rubyで条件変数を設定しようとしています。変数がnilまたは空の場合(0の長さの文字列)、変数を設定する必要があります。私は次のものを思いついた:空またはnil値の文字列のテスト
variable = id if variable.nil? || (!variable.nil? && variable.empty?)
それはうまくいくものの、私にはRubyのようには見えない。上記を表現するより簡潔な方法ですか?
Rubyで条件変数を設定しようとしています。変数がnilまたは空の場合(0の長さの文字列)、変数を設定する必要があります。私は次のものを思いついた:空またはnil値の文字列のテスト
variable = id if variable.nil? || (!variable.nil? && variable.empty?)
それはうまくいくものの、私にはRubyのようには見えない。上記を表現するより簡潔な方法ですか?
チェックイン評価がそのポイントに達する必要はありません。variable.nil
は(short-circuitingのため)偽であることが保証されています。
これは十分なものでなければならない:それは偽だ場合
オブジェクトは、空の空白です:
variable = id if variable.nil? || variable.empty?
あなたはRuby on Railsをで作業している場合は、
Object.blank?
はこの正確な問題を解決します、または空白文字列。たとえば、""
," "
,nil
、[]
、および{}
はすべて空白です。
完璧な、それは私が必要だったものです( 'Object.blank')。 RubyとRailsは、それが単純なような禅で私を常に驚かせる。ありがとう! :) –
この解決策は 'variable = 3 の場合は機能しません.p variable = 5 variable.nilなら? || variable @empty? ' –
これは@RichardBrownが文字列変数であると予想しているところに、誤って整数を入れないと仮定します。 –
variable = id if variable.to_s.empty?
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?
「Rubyの方法は、」あなたはNILSと空の混合物を持っている状態に入れないことであろう文字列。このデータを返す関数があれば、空の値を返すことができます。それは、 '' ''ではなく 'nil'を返さなければなりません。 – meagar