Ruby 重构方法
我已经构建了一个Tic-Tac-Toe游戏,并希望将两个类似的方法重构为一个Ruby 重构方法,ruby,Ruby,我已经构建了一个Tic-Tac-Toe游戏,并希望将两个类似的方法重构为一个 def computer_offense(brd, square='') WINNING_LINES.each do |line| square = find_at_risk_square(line, brd, COMPUTER_MARKERR) break if square end square end def computer_defense(brd, square) WINNI
def computer_offense(brd, square='')
WINNING_LINES.each do |line|
square = find_at_risk_square(line, brd, COMPUTER_MARKERR)
break if square
end
square
end
def computer_defense(brd, square)
WINNING_LINES.each do |line|
square = find_at_risk_square(line, brd, PLAYER_MARKER)
break if square
end
square
end
您可以像这样重构:
def computer_offense_or_defense(brd, square='', offense=true)
WINNING_LINES.each do |line|
square = find_at_risk_square(line, brd, offense ? COMPUTER_MARKERR : PLAYER_MARKER)
break if square
end
square
end
因此,以前称为“计算机进攻”的地方现在可以称为“计算机进攻”或“防御”(brd,square,true)
对于电脑防御你可以打电话
computer_offense_or_defense(brd, square,false)
你可以像这样重构它
def computer_offense(brd, square='')
get_square(brd, square, COMPUTER_MARKERR)
end
def computer_defense(brd, square)
get_square(brd, square, PLAYER_MARKER)
end
def get_square(brd, square, marker)
WINNING_LINES.each do |line|
break if square = find_at_risk_square(line, brd, marker)
end
square
end
这个问题应该转移到codereview网络谢谢,我以后会这样做的。谢谢。看起来很简单,但我没能做到。