[#39863] forループの速度 — Masahiro Sato <msato@...>

15 messages 2004/07/20

[#39868] イテレータとfor文 — OOTANI TAKASHI <otn@...5.so-net.ne.jp>

大谷と申します。

31 messages 2004/07/20
[#39886] Re: イテレータとfor文 — Tietew <tietew-ml-ruby-list@...> 2004/07/21

[ruby-list:39870] Re: イテレータとfor文

From: Nowake <nowake@...>
Date: 2004-07-20 18:18:45 UTC
List: ruby-list #39870
こんばんは。野分です。

> for line in IO.foreach("filename") do
>   puts line
> end
> と書けると、lineが制御変数であることが(A)よりわかりやすいと思います。

やっぱり慣れの問題でしょうね。多分。

個人的な話で恐縮ですが、自分の心の中では下記のような理由を付けて納得して
います。


・制御構文的な表記だと「オブジェクトが作業している/オブジェクトに作業さ
  せている」感じがでないので、メソッド的な表記にしている。
  (上記の例だとforがオブジェクトを処理しているような感じがする)
  #Rubyオブジェクトは賢いので、制御構文で処理しなくても色々と作業してくれる

・そもそもイテレータという名前が良くない。概念的にはもっと広い
  「名前のない関数を引数とするメソッド呼び出し」といったようなものなので
  メソッド的な表記にしている
  # some_object.test( Proc.new { p 'test1' } ) のようなものをスマートに
  # 実現するためのもの

個人的にはもっとメソッド定義の記法と共通化したほうが好みですけどね。
大谷さんの例だとこんな感じですか。あまりかっこよくないですが……

IO.foreach("filename") def (line) 
  puts line
end


In This Thread