乘以两个数组的内容(不是阵列本身)

乘以两个数组的内容(不是阵列本身)

问题描述:

我想用卡组中的每张卡制作一个数组,因此它会是[“Ac”,“Ad”,“Ah”,“As”,“ Kc“,...],但顺序并不重要。乘以两个数组的内容(不是阵列本身)

难道注射可以用来解决这个问题吗?这已经尽可能地接近我了。

cards = ["A", "K", "Q", "J", "T", "9", "8", "7", "6", "5", "4", "3", "2"] 
suits = ["c", "s", "d", "h"] 
ruby-1.9.2-p180 :025 > cards.inject(suits) { |suit, card| suit.map{|s| "#{card}#{s}"}} 
=> ["23456789TJQKAc", "23456789TJQKAs", "23456789TJQKAd", "23456789TJQKAh"] 

这是你的目标吗?

cards.map { |card| 
    suits.map { |suit| "#{card}#{suit}" } 
}.flatten 
+0

想要使用注入,但是这是我的一个解决方案。由于某种原因,每当我看到一个案例,注入对我有意义,我只是最终使用地图。 – 2011-06-08 19:50:30

或许类似于

cards.product(suits).map(&:join) 

某事,这不使用inject但认为值得一提:Array#product。看到类似问题的答案here