ごとけんです
In message "[ruby-list:14422] Re: substitution, variable (Re: はじめまして)"
on 99/05/22, Kenji Horikoshi <k-horix / s.email.ne.jp> writes:
>やりたかったことは,配列要素を順に書き換える前に,別の処理のため
>一部処理前のデータを保存しておくということでしたが,まだ,Cや
>Perlでの感覚を持ち込んでいるようです.
はじめに外野がいろいろ言うと覚えることが多いと感じて気力をそ
ぐかも知れませんが、お節介なので言っちゃうと、その手の処理は
Ruby では collect というイテレーターをつかうと簡潔にできます。
days = ["1999/05/16", "1999/05/19", "1999/05/22"]
quoted_days = days.collect{|d| "`" + d + "'"}
p days
p quoted_days
を実行すると次の2行を表示するはずです。
["1999/05/16", "1999/05/19", "1999/05/22"]
["`1999/05/16'", "`1999/05/19'", "`1999/05/22'"]
うえの quoted_days = ... の行は次のコードとほぼ等価です:
quoted_days = []
for d in days
quoted_days.push "`" + d + "'"
end
もしくは
quoted_days = []
days.each do |d|
quoted_days.push "`" + d + "'"
end
など。メソッド each もイテレーターで実は for 制御も一種のイ
テレーターなのですが、collect と for は要素を一つづつ取り出
すメソッド each を使って実現されています。また collect は
Enumerable という組み込みモジュールで定義されていて、組み込
みクラス Array は Enumerable をインクルードしています。次の
機会にでもお試し下さい。覚えると病み付きになること請け合い (^^;
-- gotoken