【发布时间】:2011-11-17 22:22:42
【问题描述】:
为了简单起见,我有一个产品列表。
现在我想创建一个方法,每次都会为我生成一个随机产品。
我如何做到这一点。
【问题讨论】:
标签: ruby-on-rails ruby
为了简单起见,我有一个产品列表。
现在我想创建一个方法,每次都会为我生成一个随机产品。
我如何做到这一点。
【问题讨论】:
标签: ruby-on-rails ruby
假设你有一个Products数组,那么你可以通过以下代码随机选择一个Product:
randon_product = products.sample
【讨论】:
在 1.9 中您有 [].sample,在 1.8 中您有 [].choice。有一个名为 backports 的 gem 可以协调这种差异和其他差异,或者您可以像这样自己做:
class Array
def sample
choice
end
end unless Array.method_defined? :sample
【讨论】:
在 Ruby 1.8 中,最简单的方法大概是Array#choice
irb(main):005:0> 5.times {puts (1..100).to_a.choice}
14
92
84
65
9
=> 5
irb(main):006:0> [5,3,234,234,3,2,2,2].choice
=> 3
编辑在 Ruby 1.9 中,它被称为 sample,而不是 choice。
【讨论】:
sample 的好方法。 Here's the change log for Ruby 1.9.1 showing that choice was removed
array = [product1, product2, product3]
puts array[rand(array.size)]
【讨论】: