[Gauche-devel-jp] 辞書とイテレータ

Back to archive index

Kawai Shiro pract****@yahoo*****
2003年 1月 23日 (木) 01:06:21 JST


Shiro@出張中です。東京は乾燥していますね。
すぐに鼻腔内がからからになります。

> - get が返すキーと値はペアか多値か?

一般に多値の方が効率は良いです。
(現在の実装では21個以上の値は返せないという
制限があるのですが、この場合は該当しませんし)

> - keys は引数に並べるかたちで大丈夫か?
> 数が多くなったときに効率が悪く
>   はないか?

可変長引数は引数の数が10000個とかにならなければ
効率の問題は無いと思いますが、逆にそういう事態が
有り得るのならリスト渡しにしておいた方が無難でしょう。
keysをあらかじめ計算するような呼び出し方が
多いなら、可変長引数だとapplyが必要になるので、
その場合もリスト渡しの方が有利でしょうね。
その場合は、#tを渡すと全keyにするとか。

> -
> わからない/実行できないメッセージが来たらどうするか?
> (read only辞書
>   などの場合。不定?)

辞書によっては特定の操作はエラーを投げてしまっても
良いと思います。

dictionary-writable? とか dictionary-insertable?
みたいな述語を定義しておけば、caller側で判断できますし。

> - keys
> の順番と要素の取り出されてくる順番が同じである保証はな
い、でい
>   いか? keys に重複があった場合は?

順番は保証無しで良いんじゃないでしょうか。
基本的なモデルとしては、

  SELECT * IN dictionary WHERE key IN keys

みたいなイメージだったので、keysに重複があっても
結果には反映されないかなと思っていました。

> - 順序つき辞書に対応できるか? (Java
> には順序つきハッシュ?があったよ
>   うな) insert! する位置は?

保留させて下さい。具体的な状況がまだイメージできません。

> - <dictionary> は <collection>
> のサブクラスでいいか?

一応そうなるのかなあ。
mixinにするって手もありますが。

--shiro



__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!
http://bb.yahoo.co.jp/




Gauche-devel-jp メーリングリストの案内
Back to archive index