如何修复Rubocop中的风格/多重比较攻击



当我运行rubocop:时,我一直受到这种攻击

bin/main:70:6:C:Style/MultipleComparison:避免将变量与条件中的多个项进行比较,使用Array#include?相反

我的代码:

if board1 == [1, 2, 3] || board1 == [4, 5, 6] || board1 == [7, 8, 9] ||
   board1 == [3, 5, 7] || board1 == [1, 5, 9] || board1 == [1, 4, 7] ||
   board1 == [2, 5, 8] || board1 == [3, 6, 9]
  board1.each { |state| board_states[state - 1] = 'X' }
  puts "#{player1} win"
  break
end

我对ruby和一般编码都是新手。如何按照rubocop的建议重构上面的代码,使其更加简洁?

Rubocop建议您使用Array#include?重构if条件。
  states = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [3, 5, 7], [1, 5, 9], [1, 4, 7], [2, 5, 8], [3, 6, 9]]
  if states.include?(board1)
    board1.each { |state| board_states[state - 1] = 'X' }
    puts "#{player1} win"
    break
  end

最新更新