原です。
In message "[ruby-list:6168] Re: Ruby連載 第3回"
on 98/02/02, hisanori / sitc.toshiba.co.jp <hisanori / sitc.toshiba.co.jp> writes:
|松尾です。
|0. 名が体を表してない
「繰り返さないのにイテレータとはこれいかに」という突っ込みに
対しては、「繰り返さないことを1回繰り返す言うわけで、考えよ
うによってはかなり数学的だ」と切り返すのはどうかしら。
さらに進んで「0回繰り返す」単なるメソッドもイテレータと呼べ
るわけで、、、(単なるメソッドにイテレータブロックをつけて文
法上のエラーにはならいですよね)この際、こういうのはどうでしょ
う?
イテレータおよびイテレータブロックという言葉は廃止し、
「全てのメソッドはブロックを伴える」とする。
iterator? の語源を聞かれたら知らんふりする。
こうすると新しい名前を考えなくてすむでしょう?(^_^)
|2. 複数の手続きを指定する事が出来ない。
昔、イテレータの効用について「制御構造を定義できる」というのが
あったけど、if () then {} else {} end がつくれへんやんけ、と思っ
たのは私だけではないみたいですね。:-)
In message "[ruby-list:6196] Re: Ruby連載 第3回"
on 98/02/03, Yukihiro Matsumoto <matz / netlab.co.jp> writes:
|まつもと ゆきひろです
|4. 現在与えられているイテレータブロックを他のイテレータにそ
| のまま渡すのが面倒
|
|ってのがあります.滅多に発生するもんじゃなくて,イテレータが
|再帰する時くらいですが
|
| def foo(n)
| for item in n
| foo(item) { |x| yield x }
| end
| end
ああ、これもそう思いました。最初イテレータブロックはそのまま、
渡るのかと思いました。つまり、
def foo(n)
for item in n
foo(item)
end
end
でいいのかと。渡したくない場合は
def foo(n)
for item in n
foo(item){}
end
end
とわざわざすることになるけど。