我正在尝试在Ruby中有条件地设置变量。如果变量为nil或空(0长度字符串),我需要设置它。我想出了以下内容:
variable = id if variable.nil? || (!variable.nil? && variable.empty?)
虽然它有效,但它对我来说似乎不像Ruby。表达上述内容的方式是否更为简洁?
答案 0 :(得分:169)
第二个子句不需要!variable.nil?
检查 - 如果评估到达该点,variable.nil
保证是假的(因为short-circuiting)。
这应该足够了:
variable = id if variable.nil? || variable.empty?
如果你正在使用Ruby on Rails,Object.blank?
解决了这个问题:
如果对象为false,空或空白字符串,则该对象为空。例如,
""
," "
,nil
,[]
和{}
都是空白的。
答案 1 :(得分:51)
如果您在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?
答案 2 :(得分:22)
variable = id if variable.to_s.empty?