演習問題の難易度は 4 章とあまり変わってないような気がするなー.
省略できる引数に指定した数がfill-columnの値に比べて大きいか小さいかをメッセージに表示する対話的関数を書いてみよ。ただし、関数に引数を渡されなかった場合のデフォルトは56とする。
今一分からないのが interactive.(interactive "P") の後に prefix-numeric-value するのと,(interactive "p") を使うのは何が違うんだろう.
(defun compare-with-fill-column (&optional arg) (interactive "p") (let ((val (or arg 56))) (if (> arg fill-column) (message "bigger") (if (< arg fill-column) (message "smaller") (message "same")))))
or は短絡評価をしてくれるので,let と組合せるとデフォルト値の設定に使える.
Perl でいう
$val //= 30 # $val = 30 unless defined( $val )
と同じ.