Next: Uninitialized let Variables, Previous: Parts of let Expression, Up: let [Contents][Index]
let
Expression以下は2つの変数zebra
とtiger
に初期値を与える式を作成します。このlet
式のbodyはmessage
関数を呼び出すリストです。
(let ((zebra "stripes") (tiger "fierce")) (message "One kind of animal has %s and another is %s." zebra tiger))
ここでのvarlistは((zebra "stripes") (tiger "fierce"))
です。
2つの変数とはzebra
とtiger
です。変数はそれぞれ2要素リストの1つ目の要素、2つ目の要素がそれらの変数の値となります。このvarlistでEmacsは変数zebra
に値"stripes"
9、変数tiger
に値"fierce"
をバインドします。この例ではどちらの値も文字列です。値には同じように別のリストやシンボルも指定できます。変数を保持するリストの後にlet
のbodyが続きます。この例でのbodyはエコーエリアに文字列をプリントするmessage
関数を使用するリストです。
この例の最後のカッコにカーソルを置いてC-x C-eとタイプする通常の方法によって評価できます。評価するとエコーエリアに以下が表示されるでしょう:
"One kind of animal has stripes and another is fierce."
これまで見てきたとおり、message
は1つ目の引数から‘%s’以外をプリントします。この例では1つ目の‘%s’の箇所に変数zebra
の値、2つ目の‘%s’の箇所に変数tiger
の値がプリントされます。
Guns, Germs, and SteelのJared Diamondによれば、“… 縞馬(zebra)は年をとるにつれあり得ないほど危険になる”そうですが、そこでは虎(tiger)ほど獰猛(fierce)になる訳ではないと主張されています(1997, W. W. Norton and Co., ISBN 0-393-03894-2, page 171)。