Rubyで条件付きで変数を設定しようとしています。変数が nil または空 (長さ 0 の文字列) の場合に設定する必要があります。私は次のことを思いつきました:
variable = id if variable.nil? || (!variable.nil? && variable.empty?)
動作しますが、私にはあまり Ruby に似ていないように見えます。上記をより簡潔に表現する方法はありますか?
Rubyで条件付きで変数を設定しようとしています。変数が nil または空 (長さ 0 の文字列) の場合に設定する必要があります。私は次のことを思いつきました:
variable = id if variable.nil? || (!variable.nil? && variable.empty?)
動作しますが、私にはあまり Ruby に似ていないように見えます。上記をより簡潔に表現する方法はありますか?
!variable.nil?
2 番目の句はチェックする必要はありません。評価がそのポイントに達した場合は、 variable.nil
false であることが保証されます (ショートサーキットのため)。
これで十分です。
variable = id if variable.nil? || variable.empty?
Ruby on Rails を使用している場合、Object.blank?
この正確な問題を解決します。
false、空、または空白文字列の場合、オブジェクトは空白です。たとえば、
""
、" "
、nil
、[]
および{}
はすべて空白です。
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?