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


10.8 ÊÑ¿ôÃͤÎÊѹ¹

ÊÑ¿ô¤ÎÃͤòÊѹ¹¤¹¤ëÉáÄ̤ÎÊýË¡¤Ï¡¢¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥àsetq¤ò»È¤¦¤³¤È¤Ç¤¹¡£ ¼Â¹Ô»þ¤ËÁªÂò¤¹¤ëÊÑ¿ô¤ò·×»»¤¹¤ëɬÍפ¬¤¢¤ë¤È¤­¤Ë¤Ï¡¢ ´Ø¿ôset¤ò»È¤¤¤Þ¤¹¡£

Special Form: setq [symbol form]…

¤³¤Î¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Ï¡¢ÊÑ¿ô¤ÎÃͤòÊѹ¹¤¹¤ë¤â¤Ã¤È¤â°ìÈÌŪ¤ÊÊýË¡¤Ç¤¢¤ë¡£ ³Æsymbol¤Ë¡¢Âбþ¤¹¤ëform¤Îɾ²Á·ë²Ì¤Ç¤¢¤ë¿·¤¿¤ÊÃͤòÍ¿¤¨¤ë¡£ ¥·¥ó¥Ü¥ë¤Î´û¸¤ÎºÝ¡¢¥í¡¼¥«¥ë¤Î«Çû¤òÊѹ¹¤¹¤ë¡£

setq¤Ïsymbol¤òɾ²Á¤·¤Ê¤¤¡£ ÆÉ¼Ô¤¬½ñ¤¤¤¿¥·¥ó¥Ü¥ë¤ËÀßÄꤹ¤ë¡£ ¤³¤ÎÊÑ¿ô¤Ï¼«Æ°Åª¤Ë¥¯¥©¡¼¥È¤µ¤ì¤ë¤Î¤Ç¤¢¤ë¡£ setq¤Î‘q’¤Ï¡¢¡Øquoted¡Ê¥¯¥©¡¼¥È¤¹¤ë¡Ë¡Ù¤òɽ¤¹¡£

¥Õ¥©¡¼¥àsetq¤ÎÃͤϡ¢ºÇ¸å¤Îform¤ÎÃͤǤ¢¤ë¡£

(setq x (1+ 2))
     ⇒ 3
x                   ; x¤Ï¥°¥í¡¼¥Ð¥ëÃͤò»ý¤Ä
     ⇒ 3
(let ((x 5)) 
  (setq x 6)        ; x¤Î¥í¡¼¥«¥ë«Çû¤òÀßÄꤹ¤ë
  x)
     ⇒ 6
x                   ; ¥°¥í¡¼¥Ð¥ëÃͤÏÊѹ¹¤µ¤ì¤Ê¤¤
     ⇒ 3

ºÇ½é¤Îform¤òɾ²Á¤·¤ÆºÇ½é¤Îsymbol¤ËÀßÄꤷ¡¢ ¤Ä¤®¤Ë¡¢2ÈÖÌܤÎform¤òɾ²Á¤·¤Æ2ÈÖÌܤÎsymbol¤ËÀßÄꤷ¡¢ ¤È¤¤¤Ã¤¿¶ñ¹ç¤Ë¤Ê¤ë¤³¤È¤ËÃí°Õ¡£

(setq x 10          ; x¤Ï¡¢y¤ÎÃͤò·×»»¤¹¤ë¤Þ¤¨¤Ë
      y (1+ x))     ;   ÀßÄꤵ¤ì¤ë¤³¤È¤ËÃí°Õ
     ⇒ 11             
Function: set symbol value

¤³¤Î´Ø¿ô¤Ï¡¢symbol¤ÎÃͤȤ·¤Ævalue¤òÀßÄꤷ¡¢value¤òÊÖ¤¹¡£ set¤Ï´Ø¿ô¤Ê¤Î¤Ç¡¢symbol¤È¤·¤Æ½ñ¤¤¤¿¼°¤Ï¡¢ ÀßÄꤹ¤ë¥·¥ó¥Ü¥ë¤òÆÀ¤ë¤¿¤á¤Ëɾ²Á¤µ¤ì¤ë¡£

ÊÑ¿ô¤Î´û¸¤ÎºÇ¥í¡¼¥«¥ë¤Î«Çû¤ËÀßÄꤹ¤ë¡£ ±£¤µ¤ì¤Æ¤¤¤ë«Çû¤Ë¤Ï±Æ¶Á¤·¤Ê¤¤¡£

(set one 1)
error→ Symbol's value as variable is void: one
(set 'one 1)
     ⇒ 1
(set 'two 'one)
     ⇒ one
(set two 2)         ; two¤Ï¥·¥ó¥Ü¥ëone¤Ëɾ²Á¤µ¤ì¤ë
     ⇒ 2
one                 ; ¤½¤Î¤¿¤á¡¢one¤ËÀßÄꤵ¤ì¤ë
     ⇒ 2
(let ((one 1))      ; one¤Î¤³¤Î«Çû¤¬ÀßÄꤵ¤ì¡¢
  (set 'one 3)      ;   ¥°¥í¡¼¥Ð¥ëÃͤÏÀßÄꤵ¤ì¤Ê¤¤
  one)
     ⇒ 3
one
     ⇒ 2

symbol¡Ê¤Îɾ²Á·ë²Ì¡Ë¤¬¼ÂºÝ¤Ë¤Ï¥·¥ó¥Ü¥ë¤Ç¤Ê¤¤¤È¡¢ ¥¨¥é¡¼wrong-type-argument¤òÄÌÃΤ¹¤ë¡£

(set '(x y) 'z)
error→ Wrong type argument: symbolp, (x y)

ÏÀÍýŪ¤Ë¤Ï¡¢set¤Ïsetq¤è¤ê¤â¤µ¤é¤Ë´ðËÜŪ¤ÊÁàºî¤Ç¤¢¤ë¡£ ¤É¤ó¤Êsetq¤Î»È¤¤Êý¤Ç¤â¡¢set¤ÇÁÇľ¤Ë½ñ¤­Ä¾¤»¤ë¡£ setq¤Ï¡¢set¤ò»È¤Ã¤Æ¥Þ¥¯¥í¤È¤·¤ÆÄêµÁ¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¢¤ë¡£ ¤·¤«¤·¡¢set¤½¤Î¤â¤Î¤ò»È¤¦¤³¤È¤Ïµ©¤Ç¤¢¤ê¡¢ ½é¿´¼Ô¤Ïset¤òÃΤëɬÍפ¬¤Û¤È¤ó¤É¤Ê¤¤¡£ ÀßÄꤹ¤ëÊÑ¿ô¤ò¼Â¹Ô»þ¤ËÁª¤Ö¤È¤­¤Ë¤Î¤ßÍ­ÍѤǤ¢¤ë¡£ ¤¿¤È¤¨¤Ð¡¢¥³¥Þ¥ó¥Éset-variable¤Ï¡¢ ¥æ¡¼¥¶¡¼¤«¤éÊÑ¿ô̾¤òÆÉ¤ß¼è¤ê¤½¤ÎÊÑ¿ô¤ËÀßÄꤹ¤ë¤Î¤Ç¡¢ set¤ò»È¤¦É¬Íפ¬¤¢¤ë¡£

Common Lisp¤Ë´Ø¤·¤¿Ãí°Õ¡§ Common Lisp¤Ç¤Ï¡¢set¤Ï¤Ä¤Í¤Ë¥·¥ó¥Ü¥ë¤Î¡Ø¥¹¥Ú¥·¥ã¥ë¡Ù¤Ê¡¢¤Ä¤Þ¤ê¡¢ ưŪ¤ÊÃͤòÊѹ¹¤·¡¢Ê¸Ì®¾å¤Î«Çû¤ò̵»ë¤¹¤ë¡£ Emacs Lisp¤Ç¤Ï¡¢¤¹¤Ù¤Æ¤ÎÊÑ¿ô¤È¤¹¤Ù¤Æ¤Î«Çû¤ÏưŪ¤Ç¤¢¤ê¡¢ set¤Ï¤Ä¤Í¤Ë´û¸¤ÎºÇ¥í¡¼¥«¥ë¤Î«Çû¤ËºîÍѤ¹¤ë¡£

ÊÑ¿ô¤ËÀßÄꤹ¤ëÊ̤δؿô¤Ï¡¢¥ê¥¹¥È¤Ë´û¸¤Ç¤Ê¤¤Í×ÁǤòÄɲ乤ë¤è¤¦¤Ë À߷פµ¤ì¤¿¤â¤Î¤Ç¤¹¡£

Function: add-to-list symbol element

¤³¤Î´Ø¿ô¤Ï¡¢element¤¬ÊÑ¿ôsymbol¤ÎÃͤΥꥹ¥È¤Î¥á¥ó¥Ð¤Ç¤Ê¤±¤ì¤Ð¡¢ element¤ÈÊÑ¿ôsymbol¤ÎÃͤò¥³¥ó¥¹¤·¤¿Ãͤò ÊÑ¿ôsymbol¤ËÀßÄꤹ¤ë¡£ ¥ê¥¹¥È¤òÊѹ¹¤·¤Æ¤â¤·¤Ê¤¯¤Æ¤â·ë²Ì¤Î¥ê¥¹¥È¤òÊÖ¤¹¡£ ¸Æ¤Ó½Ð¤¹¤Þ¤¨¤Ë¡¢symbol¤ÎÃͤϥꥹ¥È¤Ç¤¢¤ë¤Û¤¦¤¬¤è¤¤¡£

°ú¿ôsymbol¤Ï°ÅÌۤ˥¯¥©¡¼¥È¤µ¤ì¤Ê¤¤¡£ add-to-list¤Ï¡¢set¤Î¤è¤¦¤ËÉáÄ̤δؿô¤Ç¤¢¤ê¡¢ setq¤È¤Ï°ã¤¦¡£ ɬÍפʤé¤Ð¡¢ÆÉ¼Ô¼«¿È¤Ç¥¯¥©¡¼¥È¤¹¤ë¡£

add-to-list¤Î»È¤¤Êý¤ò°Ê²¼¤Ë¼¨¤·¤Þ¤¹¡£

(setq foo '(a b))
     ⇒ (a b)

(add-to-list 'foo 'c)     ;; c¤òÄɲ乤ë
     ⇒ (c a b)

(add-to-list 'foo 'b)     ;; ¤Ê¤ó¤Î¸ú²Ì¤â¤Ê¤¤
     ⇒ (c a b)

foo                       ;; foo¤ÏÊѹ¹¤µ¤ì¤Æ¤¤¤ë
     ⇒ (c a b)

(add-to-list 'var value)¤ËÅù²Á¤Ê¼°¤Ï¤Ä¤®¤Î¤È¤ª¤ê¤Ç¤¹¡£

(or (member value var)
    (setq var (cons value var)))

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