Оператор космического корабля и условные высказывания

Быстрый вопрос. Есть ли более элегантный способ написать что-то подобное?

result = a <=> b

if result == 1
  # do something
elsif result == 0
  # do something else
else
  # do something else
end

2 ответа

Решение

Вы можете использовать case утверждение:

case a <=> b
  when 1
    # do something
  when 0
    # do something else
  when -1
    # do something else
  else
    # return / catch error
end

Для простых лайнеров вы также можете сократить его с then

case a <=> b
  when 1 then x = "foo"
  when 0 then y = "bar"
  when -1 then z = "foobar"
  else # return / catch error
end

Я не знаю, является ли это более изящным, но это конечно более прямо:

case
when a < b
  # do A
when a > b
  # do B
else
  # do C
end
Другие вопросы по тегам