2つに絞れない
こんにちは!
エカキオです!
今回の記事では、条件式で複数のオプションを付けられるものにしたいと思います。
はい
か
いいえ
で答えられないことってありますよね。
まぁまぁとか、
ぼちぼちとか、
微妙とか。
AとかBとかCとか!!
そんな感じのオプションで使えます。
(違うかなー?)
入力を規制する
では、さっそく。
自由に入力できる!とは言っても、
ある程度の範囲の中で入力してもらいたいですよね。
そんな時に使うのはこの関数。
(initget)関数
(initget ○ △)
○:制限オプション
△:入力文字の指定
○に関しては、
まずは1を入力すると覚えてください。
その場合、なにも入力せずEnterを入力するとエラーとなり再度入力を求められます。
では、具体的に書いてみます。
(initget 1 "a b c")
説明します。
△部分について
「a」か「b」か「c」のみ入力できます。
ということです。
ちなみにこの(initget)関数は、次の文に(get〜)関数がある場合に有効になります。
実際の書き方としては、
(initget 1 "a b c")
(setq an1 (getkword "¥n選べます a / b / c :"))
こんな感じです。
いざ多数条件分岐
ここから多数条件分岐の解説に入っていきます。
心の準備はよろしいでしょうか!?
(cond)関数
こちらは複数の条件分岐に使います。
書き方はこうです。
(cond ((○)△)((○)△)((○)△)...(t) )
○:条件
△:条件がnil以外になるときに実行されるもの
上から判断していき、条件が達成されると△が実行され、(cond)関数が終了します。
どれにも該当しない場合エラーとなるため、最後は(t)を入れ、(cond)関数を終了させましょう。
(initget 1 "a b c") (setq an1 (getkword "¥n池に落とした斧は? 金の斧(a)/銀の斧(b)/ボロイ斧(c):")) (cond ((= an1 "a") (princ "¥nあなたは嘘つきです。")) ((= an1 "b") (princ "¥nあなたが嘘つきです。")) ((= an1 "b") (princ "¥nあなたが正直者です。")) (t) )
(getkword ~)の~部分は個人の自由です。
" 池に落とした手袋は? 金色→a , 銀色→ , 白→c >>"
とかでも、なんでもOKですよ。
要は入力する際にわかりやすくするということが大事です。
いかがでしたでしょうか。
多数の条件分岐について紹介してきました。
実際の使い方としては、一つのコマンドに色々な機能を持たせて、
使用者の要望に合わせて実行させる。というような使い方が多いかと思います。
だいぶ、Lispの使い方もわかってきて、そろそろオリジナルコマンドを
自分で作れるようになってきたのではないでしょうか。
近いうちに、「Lisp 実践編」シリーズを紹介していきたいので、
今後も遊びに来ていただけますと幸いです。
入門編シリーズもまだまだ紹介予定ですけどね。
では、この辺で。
エカキオ