Ruby: используйте возврат условия для назначения и сравнения переменных

У меня есть метод, и чтобы проверить, передается ли ему блок, я делаю следующее:

if block_given?
    res = yield(array[i], array[i+1])
  else
    res = array[i] - array[i+1]
  end

Однако RuboCop дает мне предупреждение, которое я не очень понимаю в if block_given? линия:

Используйте возврат условия для назначения и сравнения переменных

Есть ли другой, более рубиновый способ сделать это?

Спасибо

1 ответ

Решение

Что предупреждение говорит вам сделать это:

res = if block_given?
        yield(array[i], array[i+1])
      else
        array[i] - array[i+1]
      end

То есть иметь одно назначение вместо двух (или даже больше).

Другие вопросы по тегам