121

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

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

動作しますが、私にはあまり Ruby に似ていないように見えます。上記をより簡潔に表現する方法はありますか?

4

3 に答える 3

226

!variable.nil?2 番目の句はチェックする必要はありません。評価がそのポイントに達した場合は、 variable.nilfalse であることが保証されます (ショートサーキットのため)。

これで十分です。

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

Ruby on Rails を使用している場合、Object.blank?この正確な問題を解決します。

false、空、または空白文字列の場合、オブジェクトは空白です。たとえば、""" "nil[]および{}はすべて空白です。

于 2013-04-13T14:44:20.300 に答える
69

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?
于 2014-06-11T19:12:56.560 に答える