Gauche > Archives > 2009/08/29

2009/08/29 09:31:56 UTCPocket
#
初歩的な質問かもしれませんが、どのように書けば良いか困っている所が有るので
#
質問させてください。
#
関数でキーワード引数とS式を同時にとる事は出来るでしょうか?しかもキーワードの方を先にとる形式で
#
(get-keyword-and-sep :init 5 :string "Hello" (displa
#
誤送信です。
#
(get-keyword-and-sexp :init 5 :string "Hello" (fn1 34 3) (fn2 "World"))
#
みたいな感じでget-keywordないで使う値をkeywordで渡してもらいのこりは普通のS式を受け取る
#
と言った形式にしたいのですが。
#
よろしくおねがいします。
2009/08/29 11:52:48 UTCshiro@Tokyo
#
そういう形式にもできますが、滅多に使わない形式なので特にライブラリサポートはありません。
#
(define (get-keyword-and-sexp . args) ...) のようにリストで受けて、自前でキーワード引数を探すことになります。
#
text.html-liteの関数がその形式の引数を取りますよ。
#
システムでサポートできないひとつの理由は、上の例で(fn1 34 3)がもしキーワードを返した場合、システム的にはそれが普通の引数なのか間違ったキーワード引数なのか区別できないためです。fn1が決してキーワードを返さなければ曖昧さは生じませんが、決して返さないかどうかはアプリケーションを書く人しか知らないので。
2009/08/29 12:01:48 UTCPocket
#
なるほど、わかりました。自前で処理する事にします。
#
ありがとうございました。