From: Yukihiro Matsumoto Date: 2011-12-27T16:35:30+09:00 Subject: [ruby-dev:45053] Re: [Feature] st_update() まつもと ゆきひろです In message "Re: [ruby-dev:44998] [Feature] st_update()" on Wed, 14 Dec 2011 16:53:25 +0900, Nobuyoshi Nakada writes: |st_tableにある値を変更したり削除したりということがしたいことがま |まあるのですが、st_lookup()とst_delete()/st_insert()の組み合わせ |だとハッシュ値の計算や探索を二回繰り返さなくてはなりません。 | |そこで、以下のような関数はどうでしょうか。 | | int st_update(st_table *table, | st_data_t key, | int (*func)(st_data_t key, st_data_t *value, st_data_t arg), | st_data_t arg); | |tableからkeyに対応するペアを探して、funcを呼び出します。funcが |ST_DELETEを返した場合は相当するキーを削除、ST_CONTINUEを返した場 |合は*valueで値を更新します。 いいんじゃないでしょうか。