web-dev-qa-db-fra.com

Ruby: utilisez le retour du conditionnel pour l'affectation et la comparaison des variables

J'ai une méthode et afin de vérifier si un bloc est passé, je fais ce qui suit:

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

Cependant RuboCop me donne un avertissement que je ne comprends pas vraiment dans le if block_given? ligne:

Utilisez le retour du conditionnel pour l'affectation et la comparaison des variables

Y a-t-il une autre manière plus rubyiste de faire cela?

Merci

17
noloman

Ce que l'avertissement vous dit de faire est:

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

C'est-à-dire, avoir une seule affectation au lieu de deux (ou même plus).

29
El Profesor