2011-03-02 9 views
0

これについてのドキュメンテーションのトピックを見逃してしまった場合は、ごめんなさい。Ruby Double "it"を反復回数で返します

は二点は、コードのこの部分に何を意味するのでしょう:

require 'benchmark' 
iterations = 1000000 

b = Benchmark.measure do 
    for i in 1..iterations do 
    x = i 
    end 
end 

c = Benchmark.measure do 
    iterations.times do |i| 
    x = 1 
    end 
end 

puts b 
puts c 

私はルビーに新しいですので、私に簡単にしてください:P

+0

「for」の使用は、Rubyではユニダイマです。 –

+0

また、 'for'と 'times'をベンチマークするとき、x = i vs x = 1は奇妙です。 – steenslag

+0

これは、Beginning Rubyという本の例です。 – yretuta

答えて

4

です0は、左の数字から右の数字に移動するRangeオブジェクトを示します。

>> (1..10).to_a 
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

参照してください:これは最高のように、Arrayオブジェクトにオブジェクトを変換して表示することができますか?

>> ("a".."j").to_a 
=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] 

Rangeクラスは、私たちは反復処理することができ、私たちeach方法を与えるEnumerableモジュールを含む:このオブジェクトは、また、シーケンシャル文字のために働く10

に至る1から数字の範囲を提供します各要素は範囲内にあります。

のadditonalトリビア:右側の値を含めないまで、それはすべてを取得する以外

...

も、Rubyで使用されています。

>> (1...10).to_a 
=> [1, 2, 3, 4, 5, 6, 7, 8, 9] 
2

それは範囲です。 Rangeクラスのドキュメントはhereです。

+0

Rangeが何であるか説明し始めていません。その上にメソッドを表示するだけです。 –

2

..オペレータは、反復可能な範囲を定義します。完全性期すため(1..5).to_a => [1,2,3,4,5]

同様

、あなたはまた、それは1から反復回数の範囲を作成します(1...5).to_a => [1,2,3,4]

+0

ちょうど正しいと言えば、私は '..'は技術的には演算子だとは思わない。私はそれがむしろ小数点に似ている、むしろ言語構成であると考えています。 –

0

として、範囲の最後の要素を除外します...オペレータを、持っている

は、ここでは簡単な例

>> for i in 1..10 do 
?> puts i 
>> end 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
=> 1..10 
関連する問題