121

我正在尝试在 Ruby 中有条件地设置一个变量。如果变量为 nil 或为空(0 长度字符串),我需要设置它。我想出了以下几点:

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

虽然它有效,但对我来说似乎不是很像 Ruby。是不是更简洁的表达方式?

4

3 回答 3

226

第二个子句不需要!variable.nil?检查——如果评估达到该点,variable.nil则保证为假(因为短路)。

这应该足够了:

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

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

如果对象为假、空或空白字符串,则该对象为空。例如,""" "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 回答
35
variable = id if variable.to_s.empty?
于 2013-04-13T15:10:03.917 回答