Ruby:更改外观字符串而不更改其原始值

时间:2014-10-06 23:32:23

标签: ruby

我正在尝试用Ruby创建蜘蛛纸牌。我想只在屏幕上显示数组中的第一个元素。例如......

a = ["AH", "1H", "2H", "3H", "4H", "5H"]

这个阵列代表一堆牌从Ace到5的心脏套装。 我希望程序能在屏幕上打印......

a = ["AH", "CARD", "CARD", "CARD", "CARD", "CARD"]

但我仍然希望[1]返回“1H”,而不是“CARD”。有没有办法在不改变原始值的情况下改变字符串的外观?

3 个答案:

答案 0 :(得分:3)

puts a.map.with_index{|e, i| i.zero? ? e : "CARD"}

答案 1 :(得分:0)

为什么不制作两个阵列:一个只对游戏可见的牌组的真实和未改变的表示,以及显示玩家可以看到的牌的第二个表示。

game_deck = ["AH", "1H", "2H", "3H", "4H", "5H"]
display_deck = ["AH", "CARD", "CARD", "CARD", "CARD", "CARD"]

随着游戏的进行,您可以通过咨询display_deckgame_deck中展示新卡片。

答案 2 :(得分:0)

字面答案:

def print_mostly_cards(a)
  print "a = \"[#{a.first}\""
  (a.size-1).times { print ', "CARD"' }
  puts "]"
end

a = ["AH", "1H", "2H", "3H", "4H", "5H"]
print_mostly_cards(a)
  a = "[AH", "CARD", "CARD", "CARD", "CARD", "CARD"]