2012-06-12 20 views
1

我只看到像rand(1..5)工作在MRI红宝石1.9.3(未尝试1.9.2)。即使在1.9模式下,Jruby也不支持它 - 它会引发TypeError。ruby​​的rand方法应该接受Range对象吗?

即使ruby-doc也没有提到范围是受支持的。官方的行为是什么?

UPDATE

好视答案和评论指出,只有1.9.3支持它。 Jruby只有1.9.2。

+0

TypeError与“标准”红宝石1.9.2 – froderik

+1

尝试使用不同版本的红宝石通过rvm。它似乎只在1.9.3 – sohaibbbhatti

回答

2

The docs说它支持

如果max是范围,返回一个伪随机数,其中range.member(数量)==真。

这也是在1.9.3 changelog

+0

哈的情况下工作,愚蠢我没有实际阅读方法描述。我只看了参数名和默认值'(max = 0)'。我会接受这一次,所以让我。 – Kelvin

+1

似乎是新的,[1.9.2文档](http://www.ruby-doc.org/core-1.9.2/Kernel.html#method-i-rand)不提及它。 – Stefan

2

逐字复制粘贴从docs

If max is Range, returns a pseudorandom number where range.member(number) == true. 
Or else converts max to an integer using max1 = max.to_i.abs. 

所以,是的。它支持从红宝石1.9.3

+0

+1,但弗雷德里克是第一个,所以他得到了接受。 – Kelvin

+2

@Kelvin好的,继续。我不在乎愚蠢的观点。如果我的答案有助于这个计划网络的灵魂。这是足够好的理由让我继续发布更多的答案#JustSaying :) – CuriousMind

相关问题