From: TAKAHASHI Masayoshi Date: 2001-07-09T13:28:12+09:00 Subject: [ruby-dev:13772] Hash with block (Re: GenerativeHash) 高橋征義です。 matz@ruby-lang.org (Yukihiro Matsumoto)さん: > 「大クラス主義」のまつもととしては、サブクラス方式はあんまり > 気に入ってません。本体にとり込むんでしたら、問題をもうちょっ > と検討して Hash で対応する方が好みです。 むむ、そうだったのですか。この件に関して、まつもとさんは サブクラス推奨だと思ってました。 # 「大クラス主義」って一般用語なんでしょうか? 便利そうな # 用語ですね。そうすると、Javaは「小クラス主義」? というわけで、サブジェクトも変えて、Hashにブロックを付け加える 案を(再)検討することにします。 > | * Foo#default は Procオブジェクトを返す。 > | Foo#default= は Procじゃなきゃエラーを返す。 > > ブロック付きでnewを呼んだらdefault/default=はエラーにしてし > まうとか。 * Hash#default、Hash#default= はふつうあまり使わないし、 あまり使うべきでもない という合意がなんとなくあるなら、それでもいいかもしれません。 さらに、 * Hash#block_given? はブロック付きかどうかをtrue/falseで返す というメソッドを加えるといいでしょうか? あるいは、 * ブロック付きでnewを呼んでいた場合、 * Hash#default, Hash#default= はエラー。 * Hash#default_block で Procを返す。 * Hash#default_block= でProcを再設定。 * ブロックなしでnewを呼んでいた場合、 * Hash#default_block, Hash#default_block= はエラー。 * Hash#default、Hash#default= の挙動は現状のまま という default_block / default_block= を作るとか。 # これは名前がいまいち。 > | * ついでにFoo["a"=>1] みたいなことはできないようにする。 > > これはなんでそうしたいんでしたっけ? 単に Foo["a"=>1]{ [] } みたいなことはRubyの文法的にできないと思って いたからなのですけど、ひょっとしてできるんでしょうか。 高橋征義 (TAKAHASHI Masayoshi) Email:maki@inac.co.jp