我是一名Ruby初学者,他试图在我的刽子手游戏中添加多个类别。
我知道如何从数组中选择一个随机元素。例如:
animals = ['dog', 'cat', 'mouse']
random = animals[rand(animals.length)]
puts random
但是,我想随机选择整个数组,然后从该随机数组中选择一个随机元素。例如:
animals = ['dog', 'cat', 'mouse']
planets = [['jupiter'], ['mars']]
fruits = [['apple'], ['orange'], ['mango']]
categories =[[animals], [planets], [fruits]]
#the code I tried was:
random_array = categories[rand(categories.length)]
random_element = random_array[rand(random_array.length)]
puts random_element
但这会产生一个完整的数组,而不是一个元素。请帮忙! 感谢
答案 0 :(得分:2)
animals = ['dog', 'cat', 'mouse']
planets = [['jupiter'], ['mars']]
fruits = [['apple'], ['orange'], ['mango']]
categories = [animals, planets, fruits]
puts categories.sample.sample #=> jupiter
正如Sawa所说,这将返回一个字符串或一个子数组。 *categories.sample.sample
(一个splat)总是返回一个字符串。
答案 1 :(得分:1)
您的代码是正确的,但数组初始化不正确。这是你必须做的:
animals = ['dog', 'cat', 'mouse']
planets = ['jupiter', 'mars']
fruits = ['apple', 'orange', 'mango']
categories = [animals, planets, fruits]
在您的代码中,animals
是数组,planets
和fruits
是数组的数组,而categories
是三个数组的数组,每个数组的内部是你变量
答案 2 :(得分:0)
你应该有什么工作,这是你的categories
阵列无法正常工作。
它应该是:
categories =[animals, planets, fruits]
而不是数组中的数组混合。
答案 3 :(得分:0)
为什么不将它们弄平或者是一种矫枉过正的
a = (animals.flatten + fruits.flatten + planets.flatten)
r = a[rand(a.flatten.size)]
=> "dog"
您也可以使用效率更高的<<
来连接数组。
答案 4 :(得分:0)
答案 5 :(得分:0)