From: Akinori MUSHA Date: 2008-08-06T20:02:09+09:00 Subject: [ruby-dev:35783] Re: $SAFE=4の場合のReadline::HISTORY.each --pgp-sign-Multipart_Wed_Aug__6_20:03:44_2008-1 Content-Type: text/plain; charset=ISO-2022-JP At Tue, 5 Aug 2008 21:54:54 +0900, Takao Kouji wrote: > >  ただ、 Enumerator 自体は状態を持つものではなく、 enumerate する > > ための補助装置に過ぎないので、挙動はイテレータ実行時に決定される > > のが原則だとは思っています。  状態を持つものでないという表現は正確ではなかったですが、要は、 元のオブジェクトをありのまま包んで列挙の補助を行うもので、代入等 せずにその場でメソッドチェーンを続けて使うような使い方を主に想定 しています。  ただ、一方では「『列挙だけができる何か』に抽象化する入れ物」と しての性質があるのも確かで、たとえば「何らかの列挙子を受け取る」 メソッドに Enumerator を渡すようなケースが想定されます。しかし、 それを受け取る側は、(もらったものが Enumerator だったとして)その 中身が何でどんな例外が起き得るのかということは分からない(知って いるべきでもない)ので、例外が発生する可能性があるものは受け渡し には適さないと思います。もちろん、呼び出し側が責任をもって例外を 捕捉するのなら構いませんが。 > 上記の原則に従うならば、Readline::HISTORY.each メソッドは、 > 現在の挙動が良いようですね。私は上記の原則に納得しました。 > ということで、Readline::HISTORY.each メソッドは修正しません。 > > なお、上記の原則は knu さんのお考えなのか、 > それとも ruby (の開発者?) 全体としてのものなのかどちらでしょうかね。 > 今後、開発をする上で知っておいた方がよいと思ったので質問しています。  enumerator を提案して最初の実装を書いた私はそう見ていますが、 開発者全体のものかというと分かりません。別のより使いやすい方向が 示されれば、そちらにシフトすればいいと思います。 -- Akinori MUSHA / http://akinori.org/ --pgp-sign-Multipart_Wed_Aug__6_20:03:44_2008-1 Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (FreeBSD) iEYEABECAAYFAkiZhRAACgkQkgvvx5/Z4e4SxACgjYL+xarW9sLs9aGa2PHuCDMx MAMAn2IRyjobAsjx3Q8ajnBHsiDACuhh =L7xY -----END PGP SIGNATURE----- --pgp-sign-Multipart_Wed_Aug__6_20:03:44_2008-1--