testing空或无值string

我想在Ruby中有条件地设置一个variables。 我需要设置它,如果variables是零或空(0长度的string)。 我想出了以下几点:

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

虽然它起作用,但对我来说,这看起来不像Ruby。 上述expression方式是否更为简洁?

第二个子句不需要!variable.nil? 检查,如果评估达到这一点, variable.nil保证是错误的(由于短路 )。

这应该足够了:

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

如果你正在使用Ruby on Rails, Object.blank? 解决了这个确切的问题:

如果对象为false,空或空白string,则该对象为空。 例如, """ "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? 
 variable = id if variable.to_s.empty?