npt-japanese

% Accessor GETHASH

UP


Accessor GETHASH

Accessor GETHASH

構文

gethash key hash-table &optional default => value, present-p
(setf (gethash key hash-table &optional default) new-value)

引数と戻り値

key - オブジェクト
hash-table - ハッシュテーブル
default - オブジェクト。デフォルトはnil
value - オブジェクト
present-p - generalized-boolean

定義

valueは、hash-tableの中にある、 キーがkeyhash-tableの等価テストで 等しいとされたもののオブジェクトです。 そのようなエントリーが存在しないときは、 valuedefaultになります。

もしエントリーが見つかったときはpresent-ptrueであり、 それ以外はfalseです。

setfgethashの使用は、 与えられたキーに関連付けられた値を修正するときか あるいは新しいエントリーを追加するときに使用されます。 gethashフォームがsetfplaceで使用された場合、 defaultが与えられたときは 通常の左から右への評価ルールに従って評価されますが、 その値は無視されます。

例文

(setq table (make-hash-table)) =>  #<HASH-TABLE EQL 0/120 32206334>
(gethash 1 table) =>  NIL, false
(gethash 1 table 2) =>  2, false
(setf (gethash 1 table) "one") =>  "one"
(setf (gethash 2 table "two") "two") =>  "two"
(gethash 1 table) =>  "one", true
(gethash 2 table) =>  "two", true
(gethash nil table) =>  NIL, false
(setf (gethash nil table) nil) =>  NIL 
(gethash nil table) =>  NIL, true
(defvar *counters* (make-hash-table)) =>  *COUNTERS*
(gethash 'foo *counters*) =>  NIL, false
(gethash 'foo *counters* 0) =>  0, false
(defmacro how-many (obj) `(values (gethash ,obj *counters* 0))) =>  HOW-MANY
(defun count-it (obj) (incf (how-many obj))) =>  COUNT-IT
(dolist (x '(bar foo foo bar bar baz)) (count-it x))
(how-many 'foo) =>  2
(how-many 'bar) =>  3
(how-many 'quux) =>  0

副作用

なし。

影響

なし。

例外

なし。

参考

remhash

備考

第二返却値であるpresent-pは、 エントリーの不在か、 defaultの値を持つエントリーの存在かを、 区別するときに使用できます。


TOP, Github