irbを使用しています。最終値から文字列の範囲を作成する
私は以下のコードを書いています。
"ax".."bc"
は私が "ax""ay""az""ba"bb""bc"
を期待するが、結果はちょうど
"ax".."bc"
私はどのように修正する必要がありますか?おかげさまで
irbを使用しています。最終値から文字列の範囲を作成する
私は以下のコードを書いています。
"ax".."bc"
は私が "ax""ay""az""ba"bb""bc"
を期待するが、結果はちょうど
"ax".."bc"
私はどのように修正する必要がありますか?おかげさまで
> puts ("ax".."bc").to_a
ax
ay
az
ba
bb
bc
範囲は効率のために開始点と終了点を内部的に格納しています(また、両端を含む範囲かどうか)。だから、IRBはあなたにそれのためのリテラルを表示するだけです。
何をしますか?
範囲'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