2012-06-12 30 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

相關問題