Ruby - выход из блока IF - PullRequest
       14

Ruby - выход из блока IF

12 голосов
/ 19 октября 2011

В блоке IF мне нужно проверить, выполняется ли какое-либо условие, и если это так, выйти из блока.

#something like this
if 1 == 1
  return if some_object && some_object.property
  puts 'hello'
end

Как я могу это сделать?

Ответы [ 2 ]

15 голосов
/ 19 октября 2011

Вы не можете вырваться из if, как это. Что вы можете сделать, это добавить подпункт к нему:

if (cond1)
  unless (cond2)
    # ...
  end
end

Если у вас есть проблемы с тем, что ваша логика слишком вложенная, и вам нужен способ лучше ее сгладить, возможно, вам нужно вычислить переменную перед рукой, а затем погрузиться в нее, только если вам нужно:

will_do_stuff = cond1
will_do_stuff &&= !(some_object && some_object.property)

if (will_do_stuff)
  # ...
end

Существует несколько способов избежать глубоко вложенной структуры без необходимости break ее.

2 голосов
/ 19 октября 2011

Будьте внимательны при выборе слов, которые вы ассоциируете с вещами. Поскольку в Ruby есть блоки, я не уверен, что у вас сложилось впечатление, что условный оператор является блоком. Вы не можете, например, сделать следующее:

# will NOT work:
block = Proc.new { puts "Hello, world." }
if true then block

Если вам нужно иметь вложенное условное выражение, вы можете сделать это, не усложняя ничего:

if condition_one?
  if condition_two?
    # do some stuff
  end
else
  # do something else
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...