Next: , Previous: Void Variables, Up: Variables   [Contents][Index]


10.5 ¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤òÄêµÁ¤¹¤ë

¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥àdefconst¤ädefvar¤ÎÊÑ¿ôÄêµÁ¤ò»È¤Ã¤Æ¡¢ ¥·¥ó¥Ü¥ë¤ò¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤È¤·¤Æ»È¤¦°Õ¿Þ¤òɽÌÀ¤Ç¤­¤Þ¤¹¡£

Emacs Lisp¤Ç¤Ï¡¢ÄêµÁ¤Ë¤Ï3¤Ä¤ÎÌÜŪ¤¬¤¢¤ê¤Þ¤¹¡£ ¤Þ¤º¡¢¥³¡¼¥É¤òÆÉ¤à¿Í¸þ¤±¤Ë¡¢ÆÃÄê¤Î¥·¥ó¥Ü¥ë¤ò¡ÊÊÑ¿ô¤È¤·¤Æ¡ËÆÃÄêÌÜŪ¤Ë »È¤¦°Õ¿Þ¤¬¤¢¤ë¤³¤È¤òÃΤ餻¤Þ¤¹¡£ Âè2¤Ë¡¢Lisp¥·¥¹¥Æ¥à¤ËÂФ·¤Æ¤Ï¡¢ÃͤÈÀâÌÀʸ»úÎó¤òÄ󶡤·¤Æ ¤³¤ì¤é¤Î¤³¤È¤òÅÁ¤¨¤Þ¤¹¡£ Âè3¤Ë¡¢¥×¥í¥°¥é¥àÆâ¤Î´Ø¿ô¤äÊÑ¿ô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤òºîÀ®¤¹¤ë etags¤ämake-docfile¤Ê¤É¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ë¾ðÊó¤òÄ󶡤·¤Þ¤¹¡£

defconst¤Èdefvar¤Î°ã¤¤¤Ï¡¢¼ç¤Ë¹¥¤ß¤ÎÌäÂê¤Ç¤¢¤ê¡¢ Ãͤ¬Êѹ¹¤µ¤ì¤ë¤«¤É¤¦¤«¤ò¿Í¤ËÅÁ¤¨¤Þ¤¹¡£ Emacs Lisp¤Ï¡¢defconst¤ädefvar¤ÎÀë¸À¤Ë´ð¤Å¤¤¤Æ ÊÑ¿ô¤Î»È¤¤Êý¤òÀ©¸Â¤¹¤ë¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢½é´ü²½¤Ë´Ø¤·¤Æ¤Ï°ã¤¤¤¬¤¢¤ê¤Þ¤¹¡£ defconst¤Ï̵¾ò·ï¤ËÊÑ¿ô¤ò½é´ü²½¤·¤Þ¤¹¤¬¡¢ defvar¤ÏÊÑ¿ô¤¬¶õ¤Ç¤¢¤ë¾ì¹ç¤Ë¤Î¤ß½é´ü²½¤·¤Þ¤¹¡£

Special Form: defvar symbol [value [doc-string]]

¤³¤Î¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Ï¡¢symbol¤òÊÑ¿ô¤È¤·¤ÆÄêµÁ¤·¡¢ ½é´üÃͤäÀâÌÀʸ»úÎó¤òÀßÄꤹ¤ë¡£ ¤³¤ÎÄêµÁ¤Ï¡¢¥³¡¼¥É¤òÆÉ¤à¿Í¸þ¤±¤Ë¡¢ ÃͤòÀßÄꤷ¤¿¤êÊѹ¹¤¹¤ëÊÑ¿ô¤È¤·¤Æsymbol¤ò»È¤¦¤³¤È¤òÅÁ¤¨¤ë¡£ symbol¤Ïɾ²Á¤µ¤ì¤Ê¤¤¤³¤È¤ËÃí°Õ¡£ ÄêµÁ¤¹¤ë¥·¥ó¥Ü¥ë¤Ï¡¢defvar¤ËÌÀ¼¨Åª¤Ë¸½¤ì¤ëɬÍפ¬¤¢¤ë¡£

symbol¤ÎÃͤ¬¶õ¤Ç¤¢¤êvalue¤ò»ØÄꤷ¤Æ¤¢¤ë¤È¡¢ defvar¤Ïvalue¤òɾ²Á¤·¡¢¤½¤Î·ë²Ì¤òsymbol¤ËÀßÄꤹ¤ë¡£ ¤·¤«¤·¡¢symbol¤Ë¤¹¤Ç¤ËÃͤ¬¤¢¤ì¤Ð¡Ê¤Ä¤Þ¤ê¡¢¶õ¤Ç¤Ê¤±¤ì¤Ð¡Ë¡¢ value¤ò¤Þ¤Ã¤¿¤¯É¾²Á¤»¤º¡¢symbol¤ÎÃͤâÊѹ¹¤·¤Ê¤¤¡£ value¤ò¾Êά¤·¤¿¾ì¹ç¡¢symbol¤ÎÃͤò¤¤¤Ã¤µ¤¤Êѹ¹¤·¤Ê¤¤¡£

symbol¤Ë¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Ç¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê«Çû¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢ defvar¤Ï¥Ç¥Õ¥©¥ë¥ÈÃͤ˺îÍѤ¹¤ë¡£ ¤½¤ì¤Ï¡¢¥Ð¥Ã¥Õ¥¡¤Ë¤ÏÆÈΩ¤Ç¤¢¤ê¡¢¸½ºß¤Î¡Ê¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê¡Ë«Çû¤Ç¤Ï¤Ê¤¤¡£ defvar¤Ï¡¢¥Ç¥Õ¥©¥ë¥ÈÃͤ¬¶õ¤Î¾ì¹ç¤Ë¥Ç¥Õ¥©¥ë¥ÈÃͤòÀßÄꤹ¤ë¡£ see Buffer-Local Variables¡£

emacs-lisp¥â¡¼¥É¤Ë¤ª¤¤¤ÆC-M-x¡Êeval-defun¡Ë¤Ç¥È¥Ã¥×¥ì¥Ù¥ë¤Î ¥Õ¥©¡¼¥àdefvar¤òɾ²Á¤¹¤ë¤È¡¢ eval-defun¤ÎÆÃÊ̤ʵ¡Ç½¤Ë¤è¤ê¡¢ ÊÑ¿ô¤ÎÃͤ¬¶õ¤«¤É¤¦¤«¤òÄ´¤Ù¤º¤Ë̵¾ò·ï¤ËÊÑ¿ô¤ËÀßÄꤹ¤ë¡£

doc-string¤¬¤¢¤ì¤Ð¡¢¤½¤ì¤ÏÊÑ¿ô¤ÎÀâÌÀʸ¤ò»ØÄꤹ¤ë¡£ ¡ÊÀâÌÀʸ¤ò»ØÄê¤Ç¤­¤ë¤Î¤Ï¡¢ÊÑ¿ôÄêµÁ¤Î¼ç¤ÊÍøÅÀ¤Î1¤Ä¤Ç¤¢¤ë¡£¡Ë ÀâÌÀʸ¤Ï¥·¥ó¥Ü¥ë¤Î°À­variable-documentation¤Ë³ÊǼ¤¹¤ë¡£ Emacs¤Î¥Ø¥ë¥×´Ø¿ô¡Êsee Documentation¡Ë¤Ï¡¢¤³¤Î°À­¤òÄ´¤Ù¤ë¡£

doc-string¤ÎºÇ½é¤Îʸ»ú¤¬‘*’¤Ç¤¢¤ë¤È¡¢ ¤³¤ÎÊÑ¿ô¤ò¥æ¡¼¥¶¡¼¥ª¥×¥·¥ç¥ó¤È¹Í¤¨¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£ ¤³¤ì¤Ë¤è¤ê¡¢¥æ¡¼¥¶¡¼¤Ï¥³¥Þ¥ó¥Éset-variable¤äedit-options¤ò »È¤Ã¤Æ´Êñ¤ËÊÑ¿ô¤òÀßÄê¤Ç¤­¤ë¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢¥æ¡¼¥¶¡¼¥ª¥×¥·¥ç¥ó¤ÎÊÑ¿ô¤Ë¤Ï¡¢ defvar¤Ç¤Ï¤Ê¤¯defcustom¤ò»È¤Ã¤¿¤Û¤¦¤¬¤è¤¯¡¢ ¤½¤¦¤¹¤ì¤Ð¥«¥¹¥¿¥Þ¥¤¥º¾ðÊó¤ò»ØÄê¤Ç¤­¤ë¡£ see Customization¡£

¤¤¤¯¤Ä¤«Îã¤ò¤¢¤²¤ë¡£ ¤Ä¤®¤Î¥Õ¥©¡¼¥à¤Ïfoo¤òÄêµÁ¤¹¤ë¤¬½é´ü²½¤Ï¤·¤Ê¤¤¡£

(defvar foo)
     ⇒ foo

¤Ä¤®¤ÎÎã¤Ï¡¢bar¤ÎÃͤò23¤Ë½é´ü²½¤·¡¢ÀâÌÀʸ»úÎó¤òÍ¿¤¨¤ë¡£

(defvar bar 23
  "The normal weight of a bar.")
     ⇒ bar

¤Ä¤®¤ÎÎã¤Ï¡¢bar¤ÎÀâÌÀʸ»úÎó¤òÊѹ¹¤·¡¢ ¤³¤ÎÊÑ¿ô¤ò¥æ¡¼¥¶¡¼¥ª¥×¥·¥ç¥ó¤Ë¤¹¤ë¡£ ¤·¤«¤·¡¢bar¤Ë¤Ï¤¹¤Ç¤ËÃͤ¬ÀßÄꤷ¤Æ¤¢¤ë¤Î¤Ç¡¢ ¤½¤ÎÃͤÏÊѹ¹¤·¤Ê¤¤¡£ ¡Ê¤µ¤é¤Ë(1+ nil)¤Ïɾ²Á¤¹¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ë¤¬¡¢ ɾ²Á¤µ¤ì¤Ê¤¤¤Î¤Ç¥¨¥é¡¼¤Ï¤Ê¤¤¡£¡Ë

(defvar bar (1+ nil)
  "*The normal weight of a bar.")
     ⇒ bar
bar
     ⇒ 23

¤Ä¤®¤ÎÎã¤Ï¡¢¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥àdefvar¤ËÅù²Á¤Ê¼°¤Ç¤¢¤ë¡£

(defvar symbol value doc-string)
≡
(progn
  (if (not (boundp 'symbol))
      (setq symbol value))
  (if 'doc-string
    (put 'symbol 'variable-documentation 'doc-string))
  'symbol)

¥Õ¥©¡¼¥àdefvar¤Ïsymbol¤òÊÖ¤¹¤¬¡¢ Ä̾盧¤Î¥Õ¥©¡¼¥à¤Ï¥Õ¥¡¥¤¥ë¤Î¥È¥Ã¥×¥ì¥Ù¥ë¤Ç»È¤ï¤ì¡¢¤½¤³¤Ç¤ÏÃͤϴط¸¤Ê¤¤¡£

Special Form: defconst symbol [value [doc-string]]

¤³¤Î¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Ï¡¢symbol¤òÊÑ¿ô¤È¤·¤ÆÄêµÁ¤·½é´ü²½¤¹¤ë¡£ ¤³¤ÎÄêµÁ¤Ï¡¢¥³¡¼¥É¤òÆÉ¤à¿Í¸þ¤±¤Ë¡¢ symbol¤Ï¤³¤ì°Ê¹ßɸ½à¤Î¥°¥í¡¼¥Ð¥ëÃͤò»ý¤Á¡¢ ¥æ¡¼¥¶¡¼¤ä¾¤Î¥×¥í¥°¥é¥à¤¬Êѹ¹¤¹¤Ù¤­¤Ç¤Ê¤¤¤³¤È¤òÅÁ¤¨¤ë¡£ symbol¤Ïɾ²Á¤µ¤ì¤Ê¤¤¤³¤È¤ËÃí°Õ¡£ ÄêµÁ¤¹¤ë¥·¥ó¥Ü¥ë¤Ï¡¢defconst¤ËÌÀ¼¨Åª¤Ë¸½¤ì¤ëɬÍפ¬¤¢¤ë¡£

defconst¤Ï¡¢value¤¬¤¢¤ì¤Ð¤Ä¤Í¤Ëvalue¤òɾ²Á¤·¡¢ ¤½¤Î·ë²Ì¤òsymbol¤ËÀßÄꤹ¤ë¡£ symbol¤Ë¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Î¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê«Çû¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢ defconst¤Ï¥Ç¥Õ¥©¥ë¥ÈÃͤòÀßÄꤷ¡¢ ¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤ÊÃͤˤǤϤʤ¤¡£ ¡Ê¤·¤«¤·¡¢defconst¤ÇÄêµÁ¤¹¤ë¥·¥ó¥Ü¥ë¤Ë¤Ï¡¢ ¥Ð¥Ã¥Õ¥¡¥í¡¼¥«¥ë¤Ê«Çû¤òºî¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£¡Ë

¤Ä¤®¤ÎÎã¤Ç¤Ï¡¢pi¤Ï¡¢¡Ê¥¤¥ó¥Ç¥£¥¢¥Ê½£Î©Ë¡ÉܤϤ¤¤¦¤Ë¤ª¤è¤Ð¤º¡Ë ¤À¤ì¤âÊѹ¹¤¹¤Ù¤­¤Ç¤Ï¤Ê¤¤¤È¹Í¤¨¤é¤ì¤ëÄê¿ô¤Ç¤¢¤ë¡£ ¤·¤«¤·¡¢2ÈÖÌܤΥե©¡¼¥à¤«¤é¤ï¤«¤ë¤è¤¦¤Ë¡¢¤³¤ì¤Ïñ¤Ë½õ¸À¤Ç¤·¤«¤Ê¤¤¡£

(defconst pi 3.1415 "Pi to five places.")
     ⇒ pi
(setq pi 3)
     ⇒ pi
pi
     ⇒ 3
Function: user-variable-p variable

¤³¤Î´Ø¿ô¤Ï¡¢variable¤¬¥æ¡¼¥¶¡¼¥ª¥×¥·¥ç¥ó¡¢¤Ä¤Þ¤ê¡¢ ¥«¥¹¥¿¥Þ¥¤¥º¤Î¤¿¤á¤Ë¥æ¡¼¥¶¡¼¤¬ÀßÄꤹ¤ë¤³¤È¤ò°Õ¿Þ¤·¤¿ÊÑ¿ô¤Ç¤¢¤ë¤È¡¢ t¤òÊÖ¤·¡¢¤µ¤â¤Ê¤±¤ì¤Ðnil¤òÊÖ¤¹¡£ ¡Ê¥æ¡¼¥¶¡¼¥ª¥×¥·¥ç¥ó¸þ¤±°Ê³°¤ÎÊÑ¿ô¤Ï¡¢Lisp¥×¥í¥°¥é¥à¤ÎÆâÉôÌÜŪÍѤˤ¢¤ê¡¢ ¤½¤ì¤é¤Ë¤Ä¤¤¤Æ¥æ¡¼¥¶¡¼¤¬ÃΤëɬÍפϤʤ¤¡£¡Ë

¥æ¡¼¥¶¡¼¥ª¥×¥·¥ç¥óÊÑ¿ô¤Ï¡¢ °À­variable-documentation¤ÎºÇ½é¤Îʸ»ú¤Ç¾¤ÎÊÑ¿ô¤È¶èÊ̤µ¤ì¤ë¡£ ¤½¤Î°À­¤¬Â¸ºß¤·¤ÆÊ¸»úÎó¤Ç¤¢¤ê¡¢ºÇ½é¤Îʸ»ú¤¬‘*’¤Ç¤¢¤ì¤Ð¡¢ ¤½¤ÎÊÑ¿ô¤Ï¥æ¡¼¥¶¡¼¥ª¥×¥·¥ç¥ó¤Ç¤¢¤ë¡£

¥æ¡¼¥¶¡¼¥ª¥×¥·¥ç¥óÊÑ¿ô¤Ë°À­variable-interactive¤¬¤¢¤ë¤È¡¢ ¥³¥Þ¥ó¥Éset-variable¤Ï¤½¤Î°À­Ãͤò»È¤Ã¤Æ¡¢ ÊÑ¿ô¤Î¿·¤·¤¤ÃÍ¤ÎÆÉ¤ß¼è¤ê¤òÀ©¸æ¤·¤Þ¤¹¡£ ¤³¤Î°À­Ãͤϡ¢interactive¤Î°ú¿ô¡Êsee Using Interactive¡Ë ¤Î¤è¤¦¤Ë»È¤ï¤ì¤Þ¤¹¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢¤³¤Îµ¡Ç½¤Ïdefcustom¡Êsee Customization¡Ë¤Ë¤è¤ê ¤Û¤È¤ó¤ÉÇÑ¤ì¤Æ¤¤¤Þ¤¹¡£

·Ù¹ð¡§ ÊÑ¿ô¤Ë¥í¡¼¥«¥ë«Çû¤¬¤¢¤ë¤È¤­¤Ë ¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥àdefconst¤ädefvar¤ò»È¤¦¤È¡¢ ¥í¡¼¥«¥ë«Çû¤ÎÃͤòÊѹ¹¤·¡¢¥°¥í¡¼¥Ð¥ë«Çû¤ÏÊѹ¹¤·¤Ê¤¤¡£ ¤³¤ì¤Ï˾¤à¸ú²Ì¤Ç¤Ï¤Ê¤¤¡£ ¤³¤ì¤òËɤ°¤Ë¤Ï¡¢¤³¤ì¤é¤Î¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Ï¥Õ¥¡¥¤¥ë¤Î¥È¥Ã¥×¥ì¥Ù¥ë¤Ç»È¤¦¡£ ¤½¤¦¤¹¤ì¤Ð¡¢ÉáÄ̤ÏÍ­¸ú¤Ê¥í¡¼¥«¥ë«Çû¤Ï¤Ê¤¤¡£ ¤µ¤é¤Ë¡¢ÊÑ¿ô¤Î¥í¡¼¥«¥ë«Çû¤òºî¤ë¤Þ¤¨¤Ë¡¢ ³Î¼Â¤Ë¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤·¤Æ¤ª¤¯¡£