2011-09-30 12 views
5

irbを使用しています。最終値から文字列の範囲を作成する

私は以下のコードを書いています。
"ax".."bc"
は私が "ax""ay""az""ba"bb""bc"


を期待するが、結果はちょうど
"ax".."bc"

私はどのように修正する必要がありますか?おかげさまで

答えて

9
> puts ("ax".."bc").to_a 
ax 
ay 
az 
ba 
bb 
bc 
2

範囲は効率のために開始点と終了点を内部的に格納しています(また、両端を含む範囲かどうか)。だから、IRBはあなたにそれのためのリテラルを表示するだけです。

何をしますか?

3

範囲'ax' .. 'bc'は、期待する値を表しますが、本当に(それぞれの値を使用しない場合に備えて時間とスペースを節約するための)方法が必要になるまで生成しません。あなたは、インターレーターまたはアレイへの変換を介してすべてそれらにアクセスすることができます:

r = 'ax' .. 'bc' # => "ax" .. "bc" 
r.class # => Range 
r.to_a # => ["ax", "ay", "az", "ba", "bb", "bc"] 
r.to_a.class # => Array 
r.each {|x| puts x} 
ax 
ay 
az 
ba 
bb 
bc 
関連する問題