Next: Combining Conditions, Previous: Sequencing, Up: Control Structures [Contents][Index]
¾ò·ïÉÕ¤À©¸æ¹½Â¤¤Ï¡¢ÁªÂò»è¤òÁª¤Ó¤Þ¤¹¡£
Emacs Lisp¤Ë¤Ï¡¢4¤Ä¤Î¾ò·ïÉÕ¤¥Õ¥©¡¼¥à¤¬¤¢¤ê¤Þ¤¹¡£
¾¤Î¸À¸ì¤Î¤â¤Î¤È¤Û¤È¤ó¤ÉƱ¤¸if
¡¢
if
¤ÎÊÑ·Á¤Ç¤¢¤ëwhen
¤äunless
¡¢
°ìÈ̲½¤·¤¿caseʸ¤Ç¤¢¤ëcond
¤Ç¤¹¡£
if
¤Ï¡¢condition¤ò¤â¤È¤Ë¤·¤Æ¡¢
then-form¤«else-forms¤òÁª¤Ö¡£
condition¤¬nil
°Ê³°¤Ëɾ²Á¤µ¤ì¤ë¤È¡¢
then-form¤òɾ²Á¤·¡¢¤½¤Î·ë²Ì¤òÊÖ¤¹¡£
¤µ¤â¤Ê¤±¤ì¤Ð¡¢else-forms¤ò¥Æ¥¥¹¥È¾å¤Î½ç¤Ëɾ²Á¤·¡¢
¤½¤ÎºÇ¸å¤Î¤â¤Î¤ÎÃͤòÊÖ¤¹¡£
¡Êif
¤ÎelseÉôʬ¤Ï¡¢°ÅÌÛ¤Îprogn
¤ÎÎã¤Ç¤¢¤ë¡£
see Sequencing¡£¡Ë
condition¤¬ÃÍnil
¤Ç¤¢¤ê¡¢¤«¤Ä¡¢else-forms¤¬¤Ê¤¤¤È¡¢
if
¤Ïnil
¤òÊÖ¤¹¡£
if
¤¬¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Ç¤¢¤ë¤Î¤Ï¡¢
ÁªÂò¤·¤Ê¤«¤Ã¤¿Ê¬´ô¤ò¤±¤Ã¤·¤ÆÉ¾²Á¤·¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
¤·¤¿¤¬¤Ã¤Æ¡¢¤Ä¤®¤ÎÎã¤Ç¤Ï¡¢
print
¤Ï¤±¤Ã¤·¤Æ¸Æ¤Ð¤ì¤Ê¤¤¤¿¤átrue
¤Ïɽ¼¨¤µ¤ì¤Ê¤¤¡£
(if nil (print 'true) 'very-false) ⇒ very-false
¤³¤ì¤Ïif
¤ÎÊÑ·Á¤Ç¤¢¤ê¡¢else-forms¤¬¤Ê¤¯¡¢
then-forms¤ÏÊ£¿ô¤Î¥Õ¥©¡¼¥à¤Ç¤â¤è¤¤¡£
ÆÃ¤Ë¡¢
(when condition a b c)
¤Ï¡¢¤Ä¤®¤È¤Þ¤Ã¤¿¤¯Åù²Á¤Ç¤¢¤ë¡£
(if condition (progn a b c) nil)
¤³¤ì¤Ïthen-form¤¬¤Ê¤¤if
¤ÎÊÑ·Á¤Ç¤¢¤ë¡£
(unless condition a b c)
¤Ï¡¢¤Ä¤®¤È¤Þ¤Ã¤¿¤¯Åù²Á¤Ç¤¢¤ë¡£
(if condition nil a b c)
cond
¤ÏǤ°Õ¸Ä¿ô¤ÎÁªÂò»è¤«¤é1¤Ä¤òÁª¤Ö¡£
cond
¤Î³ÆÀáclause¤Ï¥ê¥¹¥È¤Ç¤¢¤ëɬÍפ¬¤¢¤ë¡£
¤³¤Î¥ê¥¹¥È¤ÎCAR¤¬condition¡Ê¾ò·ï¡Ë¤Ç¤¢¤ë¡£
»Ä¤ê¤ÎÍ×ÁǤϡ¢¤¢¤ì¤Ð¡¢body-forms¡ÊËÜÂÎ¥Õ¥©¡¼¥à¡Ë¤Ç¤¢¤ë¡£
¤Ä¤Þ¤ê¡¢³ÆÀá¤Ï¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ë¡£
(condition body-forms…)
cond
¤Ï¡¢³ÆÀá¤Îcondition¤òɾ²Á¤·¤Æ¡¢
³ÆÀá¤ò¥Æ¥¥¹¥È¾å¤Î½ç¤Ë»î¤¹¡£
condition¤ÎÃͤ¬nil
°Ê³°¤Ç¤¢¤ì¤Ð¡¢
¤½¤ÎÀá¤Ï¡ØÀ®¸ù¡Ù¤¹¤ë¡£
¤½¤¦¤¹¤ë¤È¡¢cond
¤Ï¤½¤ÎÀá¤Îbody-forms¤òɾ²Á¤·¡¢
body-forms¤ÎºÇ¸å¤ÎÃͤ¬cond
¤ÎÃͤȤʤ롣
»Ä¤ê¤ÎÀá¤Ï̵»ë¤¹¤ë¡£
condition¤ÎÃͤ¬nil
¤Ç¤¢¤ë¤È¡¢
¤½¤ÎÀá¤Ï¡Ø¼ºÇÔ¡Ù¤·¡¢
cond
¤Ï¤Ä¤®¤ÎÀá¤Ø°Ü¤ê¤½¤Îcondition¤ò»î¤¹¡£
³Æcondition¤¬nil
¤Ëɾ²Á¤µ¤ì¤ë¤È¡¢
¤¹¤Ù¤Æ¤ÎÀ᤬¼ºÇÔ¤·¡¢cond
¤Ïnil
¤òÊÖ¤¹¡£
Àáclause¤Ï¡¢¤Ä¤®¤Î·Á¼°¤Ç¤â¤è¤¤¡£
(condition)
¤³¤Î¾ì¹ç¡¢condition¤¬nil
°Ê³°¤Ç¤¢¤ë¤È¡¢
condition¤¬cond
¥Õ¥©¡¼¥à¤ÎÃͤˤʤ롣
°Ê²¼¤ÎÎã¤Ë¤Ï4¤Ä¤ÎÀ᤬¤¢¤ê¡¢
x
¤ÎÃͤ¬¡¢¿ô¡¢Ê¸»úÎ󡢥Хåե¡¡¢¥·¥ó¥Ü¥ë¤«¤É¤¦¤«Ä´¤Ù¤ë¡£
(cond ((numberp x) x) ((stringp x) x) ((bufferp x) (setq temporary-hack x) ; 1¤Ä¤ÎÀá¤Ë (buffer-name x)) ; Ê£¿ô¸Ä¤ÎËÜÂÎ¥Õ¥©¡¼¥à ((symbolp x) (symbol-value x)))
ºÇ¸å¤ÎÀá¤ò½ü¤¯¤½¤ì¤è¤ê¤Þ¤¨¤ÎÀ᤬¤É¤ì¤âÀ®¸ù¤·¤Ê¤¤¤È¤¤Ë¤Ï¡¢
ºÇ¸å¤ÎÀá¤ò¼Â¹Ô¤·¤¿¤¤¤³¤È¤¬¤·¤Ð¤·¤Ð¤¢¤ë¡£
¤³¤ì¤ò¹Ô¤¦¤Ë¤Ï¡¢(t body-forms)
¤Î¤è¤¦¤Ë
ºÇ¸å¤ÎÀá¤Îcondition¤Ët
¤ò»È¤¦¡£
¥Õ¥©¡¼¥àt
¤Ït
¤Èɾ²Á¤µ¤ì¡¢¤±¤Ã¤·¤Ænil
¤Ç¤Ï¤Ê¤¤¡£
¤½¤Î¤¿¤á¡¢cond
¤¬¤³¤ÎÀá¤Ë㤷¤¿¤È¤¤Ë¤Ï¡¢
¤³¤ÎÀ᤬¼ºÇÔ¤¹¤ë¤³¤È¤Ï¤Ê¤¤¡£
¤¿¤È¤¨¤Ð¡¢¤Ä¤®¤Î¤È¤ª¤ê¡£
(cond ((eq a 'hack) 'foo) (t "default")) ⇒ "default"
¤³¤Î¼°¤Ï¡¢a
¤ÎÃͤ¬hack
¤Î¤È¤¤Ë¤Ïfoo
¤òÊÖ¤·¡¢
¤µ¤â¤Ê¤±¤ì¤Ðʸ»úÎó"default"
¤òÊÖ¤¹cond
¤Ç¤¢¤ë¡£
Ǥ°Õ¤Î¾ò·ïÉÕ¤¹½Â¤¤Ï¡¢cond
¤äif
¤Çɽ¸½¤Ç¤¤Þ¤¹¡£
¤·¤¿¤¬¤Ã¤Æ¡¢¤É¤Á¤é¤ò»È¤¦¤«¤Ï¹¥¤ß¤ÎÌäÂê¤Ç¤¹¡£
¤¿¤È¤¨¤Ð¡¢¤Ä¤®¤Î¤È¤ª¤ê¤Ç¤¹¡£
(if a b c) ≡ (cond (a b) (t c))