BC0*_*C00 17 ruby hash-of-hashes
我正在尝试使用嵌套哈希.我有一副牌代表如下:
deck_of_cards = {
:hearts => {:two => 2, :three => 3, :four => 4, :five => 5, :six => 6, :seven => 7, :eight => 8, :nine => 9, :ten => 10, :jack => 10, 
            :queen => 10, :king => 10, :ace => 11},
:spades => {:two => 2, :three => 3, :four => 4, :five => 5, :six => 6, :seven => 7, :eight => 8, :nine => 9, :ten => 10, :jack => 10, 
            :queen => 10, :king => 10, :ace => 11},
:clubs => {:two => 2, :three => 3, :four => 4, :five => 5, :six => 6, :seven => 7, :eight => 8, :nine => 9, :ten => 10, :jack => 10, 
            :queen => 10, :king => 10, :ace => 11},
:diamonds => {:two => 2, :three => 3, :four => 4, :five => 5, :six => 6, :seven => 7, :eight => 8, :nine => 9, :ten => 10, :jack => 10, 
            :queen => 10, :king => 10, :ace => 11}
}
我的目标是能够从卡座上移除一张特定的卡片并返回没有该特定卡片的卡片组.有人能够帮助我如何迭代哈希并删除像两个俱乐部的卡?
deck_of_cards[:two][:clubs]
此代码可以删除一套卡片,但我无法弄清楚如何删除特定的卡片
deck_of_cards.delete_if {|k, v| k == :spades}
tex*_*uce 27
这样做:
deck_of_cards[:clubs].delete(:two)
您可以使用这样的tap功能删除元素并返回原始哈希
deck_of_cards.tap{|d| 
  d[:hearts].tap{|h| 
    h.delete(:two)
  }
}
这将返回deck_if_cards哈希,而不是:两个键
你也可以在一行中完成
    deck_of_cards.tap{|d| d[:hearts].tap{|h| h.delete("two")}}
| 归档时间: | 
 | 
| 查看次数: | 14668 次 | 
| 最近记录: |