« チャットをCometより楽に実装する方法 | Main | ついったー »

Monday, April 30, 2007

lists:keymember

[Erlang]listsより

lists:keymember

 これは関数名からは何をするのかよく分からなかったので、ドキュメントを見たのですが、それでもよく分からない・・・

指定したキーを持つタプルが存在するか調べるために使うものかと思います.

1> lists:keymember("mocha", 1, [{"cinnamon", 1}, {"mocha", 2}, {"milk", 3}]).
true
2> lists:keymember("cappuccino", 1, [{"cinnamon", 1}, {"mocha", 2}, {"milk", 3}]).
false

こんな感じでしょうか.

lists:key~ を使えば,Perlなどのハッシュに相当する処理を行える(もちろん処理時間は異なるけれど),ということだと思います.

1> X1 = [].
[]
2> X2 = lists:merge(X1, [{"cinnamon", 1}, {"mocha", 2}]).
[{"cinnamon",1},{"mocha",2}]
3> lists:keysearch("mocha", 1, X2).
{value,{"mocha",2}}
4> X3 = lists:keydelete("mocha", 1, X2).
[{"cinnamon",1}]
5> lists:keysearch("mocha", 1, X3).
false

margeを使ってキーを追加,キーの上書きは keyreplace,取得は keysearch,存在確認は keymember,削除は keydelete,ソートは keysort で出来るようです.

タプルの数に比例して処理時間がかかると思うので,要素数が少ない場合にしか使えないとは思いますが・・・


|

« チャットをCometより楽に実装する方法 | Main | ついったー »

Comments

ありがとうございます!
非常に参考になりました!!

Posted by: perezvon | Monday, April 30, 2007 11:46 PM

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference lists:keymember:

« チャットをCometより楽に実装する方法 | Main | ついったー »