けいじゅ@いそうろう.日本ラショナルです.

In [ruby-list :03615 ] the message: "[ruby-list:3615] Re: [Request]
File.readlines ", on Aug/08 11:51(JST) matz / netlab.co.jp (Yukihiro
Matsumoto) writes:

>|ruby v1.1も近いことだと思いますので, 1つリクエストを:
>
>めんどくさがりなんですね ^^;;;
># ひとのことはいえないぞ

>|というわけで, File.readlines(filename, [sp]) を用意して頂けませんか?
>
>イテレータなら,IO.foreach(path)ってのがあるんですけど(これ
>も石塚さんのリクエストで作ったような気が…),セパレータを指

おお!! そうだった(^^;;;;

# でも, なんでIOなんだ?? Fileで良いような... 

>定できたり,配列として読み込んでくる方が良いですか?

どういう処理をしたいかによっているんでしょうけどもね.

v = 0
IO.foreach(file) {|line|
  v += line.to_i
}

の様にストリーム処理を行う時に使うんですよね. 一方

pid, command = File.readlines(file)

の様に, 予め決まった変数に代入したい時に便利だと思います.

まあ,

v = 0
for line in File.readlines(file)
  v += line.to_i
end

の様にFile.readlinesでIO.foreachは(効率はともかく)実現できますし,

File.readlines(file).collect{|line| line.to_i^2}

のようなメソッドの連鎖も簡単にできますので応用が広いとはいえますが...

lines = []
IO.foreach(file) do
  |line|
  lines.push line.to_i^2
end
lines

ところで, 私はイテレータとなるメソッドはそれがイテレータとして呼ばれて
いない時は, 配列を返すように作ることが多いんですが, そういうのはいかが
でしょう?


__
..........................................石塚 圭樹@日本ラショナル...
----------------------------------->> e-mail: keiju / bc.mbn.or.jp <<---