Тестирование пустой или нулевой строки

Я пытаюсь установить переменную условно в Ruby. Мне нужно установить его, если переменная nil или empty (0 length string). Я придумал следующее:

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

Пока он работает, для меня это не похоже на Ruby. Является ли более краткий способ выражения выше?

Ответ 1

Второе предложение не нуждается в оценке !variable.nil? check-if до этой точки, variable.nil гарантированно будет ложным (из-за короткого замыкания).

Этого должно быть достаточно:

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

Если вы работаете с Ruby on Rails, Object.blank? решает эту точную проблему:

Объект пуст, если его ложная, пустая или строка пробелов. Например, "", " ", nil, [] и {} пустые.

Ответ 2

Если вы находитесь в 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?

Ответ 3

variable = id if variable.to_s.empty?