[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
キーワードは特別なシンボルの一種で、自動的にクォートされます。 名前で渡す引数(キーワード引数)や、キーワード-値のリストで広く使われて います。 CommonLisp とは異なり、キーワードとシンボルは明確に区別される型です。
キーワード引数の処理については、let-keywords
マクロ
(省略可能引数のパージング) を参照して下さい。
:name
名前が name であるキーワードとして読み込まれます。 (先行する ':' は、キーワードの名前の一部ではないことに注意してください。)
obj がキーワードであれば、#t
を返します。
名前が name であるキーワードを返します。nameには 文字列かシンボルが許されます。
(make-keyword "foo") ⇒ :foo (make-keyword 'foo) ⇒ :foo |
キーワード keyword の名前を文字列で返します。
(keyword->string :foo) ⇒ "foo" |
キー-値のリストから値を取り出すのに便利な手続きです。 キー-値のリスト kv-list は偶数個の要素を持たなければなりません。 1つ目、3つ目、5つ目、… の要素はキーとして扱われ、 2つ目、4つ目、6つ目、… の要素は、その前の要素をキーとした値と なります。
この手続きは、キーの集合から key を探して、それが見つかれば、 対応する値を返します。 2つ以上のキーにマッチしたら、最左のものとなります。 マッチするキーがない場合、fallback が与えられていればそれを 返し、さもなければエラーを通知します。
kv-list が正しい偶数個の要素を持つリストでない場合は、エラーに なります。
キーワード-値リストの `キーワード' と、key 引数は、実際には
キーワードである必要はありません。いかなる Scheme オブジェクトで
あっても良いです。キーの比較は、eq?
によって行われます。
この手続きは、STk から導入されました。
(get-keyword :y '(:x 1 :y 2 :z 3)) ⇒ 2 (get-keyword 'z '(x 1 y 2 z 3)) ⇒ 3 (get-keyword :t '(:x 1 :y 2 :z 3)) ⇒ #<error> (get-keyword :t '(:x 1 :y 2 :z 3) #f) ⇒ #f |
get-keyword
と同様ですが、kv-list が key を
含まない場合にのみ fallback が評価されることだけが違います。
kv-list から key に eq?
であるキーをもつキーと値を
削除します。
delete-keyword
は kv-list を変更しません。しかし、
返されたリストは共通の末尾部分を共有します。
delete-keyword!
は新しくアロケートされることはありません。
そして、破壊的に kv-list を変更する可能性があります。
最初のキーがマッチした場合元のリストは変更されないこともありえますが、
返り値のリストを使わなければいけません。
key にマッチするキーがない場合 kv-list が返ります。
(delete-keyword :y '(:x 1 :y 2 :z 3 :y 4)) ⇒ (:x 1 :z 3) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
This document was generated by Shiro Kawai on November, 22 2009 using texi2html 1.78.