Ruby 语法错误,意外的关键字\u end,应为$end

Ruby 语法错误,意外的关键字\u end,应为$end,ruby,syntax-error,Ruby,Syntax Error,我刚刚开始我的ruby之旅,对编程也很陌生。这是家庭作业的代码。我得到了标题中描述的语法错误。我知道我已经添加了一些额外的结尾,而文件的结尾是预期的?正确的? 但这额外的“结束”在哪里呢 守则: class WrongNumberOfPlayersError < StandardError ; end class NoSuchStrategyError < StandardError ; end def rps_result(move1,move2) if (move1 ==

我刚刚开始我的ruby之旅,对编程也很陌生。这是家庭作业的代码。我得到了标题中描述的语法错误。我知道我已经添加了一些额外的结尾,而文件的结尾是预期的?正确的? 但这额外的“结束”在哪里呢

守则:

class WrongNumberOfPlayersError < StandardError ; end
class NoSuchStrategyError < StandardError ; end

def rps_result(move1,move2)

  if (move1 == "r" && move2 == "s") || (move1 == "s" && move2 == p) || (move1 == "p" && move2 == "r")
    return true 
  else 
    return false
  end
类错误NumberOfPlayerError
结束

def rps\u game\u赢家(玩家1、玩家2)
策略=/[rps]/
除非(move1=~strategy)和(move2=~strategy),否则引发NoSuchStrategyError
move1=player1[1]。向下移动
move2=player2[2]。下行
rps_结果(移动1、移动2)?player1:player2
结束
结束
def rps锦标赛冠军(游戏)
第四轮优胜者=[]
如果游戏长度<2
引发错误NumberOfPlayerError
其他的
游戏。每片(2)做一次
|l1,l2|

轮奖获胜者的
rps\u结果
方法从未关闭。将
rps\u游戏\u赢家
结束时的第二个
end
移动到
rps\u结果
方法的最后一行


另外,对于所有的
结束(

我已经修改了第二段代码。请检查它是否有效

def rps_game_winner(player1, player2)    
    strategy = /[rps]/
    raise NoSuchStrategyError unless (move1 =~ strategy) && (move2 =~ strategy) 

    move1 = player1[1].downcase
    move2 = player2[2].downcase

    rps_result(move1, move2) ? player1 : player2
end    

def rps_tournament_winner(game)
  round_winners = []

  if game.length < 2
    raise WrongNumberOfPlayersError
  else
    game.each_slice(2) do |l1 , l2|
      round_winners << rps_game_winner(l1, l2)
    end

    rps_tournament_winner(round_winners) 
  end
end

rps_tournament_winner([[[["Richard", "S"], ["Dave", "S"]], [["Richard", "R"], ["Michael", "S"]]], [[["Allen", "S"], ["Omer", "P"]], [["David E.", "R"], ["Richard X.", "P"]]]])
def rps\u game\u赢家(玩家1、玩家2)
策略=/[rps]/
除非(move1=~strategy)和(move2=~strategy),否则不会引发NoSuchStrategyError
move1=player1[1]。向下移动
move2=player2[2]。下行
rps_结果(移动1、移动2)?player1:player2
结束
def rps锦标赛冠军(游戏)
第四轮优胜者=[]
如果游戏长度<2
引发错误NumberOfPlayerError
其他的
游戏。每片(2)做1,2|

在未来的第四轮比赛中,请将您的问题格式化以使其清晰明了(编辑窗格下方有一个视图显示问题的实际显示方式)。请注意,您的
rps\u游戏\u winner
方法末尾有两个
end
。尝试删除一个。现在我遇到以下错误:在
rps\u game\u winner中:未定义的局部变量或main:Object(NameError)的方法来自第2部分。rb:39:in
block in
rps_锦标赛_winner'来自第2部分。rb:37:in
each'来自第2部分。rb:37:in
each_slice'来自第2部分。rb:37:in
rps_锦标赛_winner'来自第2部分。rb:48:in``在方法名称
rps_锦标赛_winner
后是否有撇号(')?
def rps_game_winner(player1, player2)    
    strategy = /[rps]/
    raise NoSuchStrategyError unless (move1 =~ strategy) && (move2 =~ strategy) 

    move1 = player1[1].downcase
    move2 = player2[2].downcase

    rps_result(move1, move2) ? player1 : player2
end    

def rps_tournament_winner(game)
  round_winners = []

  if game.length < 2
    raise WrongNumberOfPlayersError
  else
    game.each_slice(2) do |l1 , l2|
      round_winners << rps_game_winner(l1, l2)
    end

    rps_tournament_winner(round_winners) 
  end
end

rps_tournament_winner([[[["Richard", "S"], ["Dave", "S"]], [["Richard", "R"], ["Michael", "S"]]], [[["Allen", "S"], ["Omer", "P"]], [["David E.", "R"], ["Richard X.", "P"]]]])