Ruby是一种优雅的方法,可以将卡阵列处理为玩家对象

Ruby是一种优雅的方法,可以将卡阵列处理为玩家对象,ruby,arrays,iterator,Ruby,Arrays,Iterator,我很难找到一个优雅的ruby方法来做这件事。我有一个包含52张牌对象的牌组数组,我想在上面迭代并循环通过玩家对象数组,一次处理一张牌到他们的手牌数组中。比如: deck = Card.deck.shuffle! deck.each do |card| @players.NEXTELEMENT.hand << card end deck=Card.deck.shuffle! 每一张牌| @players.NEXTELEMENT.hand怎么样 deck.each_slice(

我很难找到一个优雅的ruby方法来做这件事。我有一个包含52张
对象的牌组数组,我想在上面迭代并循环通过
玩家
对象数组,一次处理一张牌到他们的手牌数组中。比如:

deck = Card.deck.shuffle!
deck.each do |card|
    @players.NEXTELEMENT.hand << card
end
deck=Card.deck.shuffle!
每一张牌|
@players.NEXTELEMENT.hand怎么样

deck.each_slice(@players.size) do |cardSet|
 @players.zip(cardSet).each {|player,card| player << card}
end
deck.每个片(@players.size)都有卡片集|
@players.zip(卡片集)。每个{玩家,卡片{玩家怎么样

deck.each_slice(@players.size) do |cardSet|
 @players.zip(cardSet).each {|player,card| player << card}
end
deck.每个片(@players.size)都有卡片集|

@players.zip(cardSet)。每个{| player,card | player只需根据玩家数量调整你所持的牌

num_players = @players.size

deck.each_with_index do |card,index|
  @players[ index % num_players ].hand << card
end
num\u players=@players.size
每一张卡片都有索引,卡片,索引|

@玩家[索引%num_玩家]。手牌只需根据玩家数量调整你所持的牌即可

num_players = @players.size

deck.each_with_index do |card,index|
  @players[ index % num_players ].hand << card
end
num\u players=@players.size
每一张卡片都有索引,卡片,索引|

@玩家[index%num_players]。我刚意识到没有处理牌用完的方法。你可以预先切分牌组以获得偶数,或者如果你检测到cardSet包含nil元素,则提前从外部循环中断。如果你使用1.9,你可以说:break if cardSet.any?(&:nil?)如果不需要一个接一个的话,有没有更简单的方法呢?cardCount=7;@players.each{| player | player.push*deck.shift(cardCount)}我刚刚意识到没有处理卡用完的方法。你可以预切卡片组以获得偶数,或者如果你检测到cardSet包含nil元素,就从外部循环提前中断。如果你使用的是1.9,你可以说:break if cardSet.any?(&:nil?)如果不需要一个接一个的话,有没有更简单的方法呢?cardCount=7;@players.each{| player | player.push*deck.shift(cardCount)}谢谢,这种方法非常干净,类似于我最初的意图。谢谢,这种方法非常干净,类似于我最初的意图。