我有一个方法,为了检查它是否被传递一个块,我执行以下操作:
if block_given? res = yield(array[i],array[i+1]) else res = array[i] - array[i+1] end
然而RuboCop给了我一个警告,我在if block_given中并不是真的理解了吗?线:
Use the return of the conditional for variable assignment and comparison
还有其他更多的rubyist方式吗?
谢谢
解决方法
警告告诉你要做的是:
res = if block_given? yield(array[i],array[i+1]) else array[i] - array[i+1] end
也就是说,只有一个分配而不是两个(甚至更多).