web-dev-qa-db-ja.com

Ruby:変数の割り当てと比較に条件の戻り値を使用する

メソッドがあり、ブロックが渡されているかどうかを確認するために、次のことを行います。

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

しかし、RuboCopは警告を出していますが、if block_given?行:

変数の割り当てと比較に条件の戻り値を使用する

これを行う他のルビイスト方法はありますか?

ありがとう

17
noloman

警告があなたにすべきことは何ですか:

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

つまり、2つ(またはそれ以上)ではなく1つの割り当てを持ちます。

29
El Profesor