[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: dot.emacs sample fixed was Re: japanese configuration



> 井上です。

> おそらくここはdefvarでなくsetqでよい気がしますが。

たしか井上さんか渡辺さんが以前説明なさっていたと思いますが、defvar と
setq の基本的な使い分けは以下のとおりです。

1. 新たに広域変数を宣言するときは defvar でデフォルト値を与える。
   すでに存在する広域変数を defvar しても、その値を変えることはできな
   い。

2. すでに存在する変数の値を変更するときは setq を使う。このときの変数
   は広域変数でも局所変数でもよい。

3. まだ宣言されていない変数に対していきなり setq を使うこともできる。
   この場合その変数はsetq で指定された値を持つ広域変数となる。いちいち 
   defvar で宣言しなくてもいいのでテストする分には便利だが、こういう使
   い方は行儀が悪いとされる。特にデバッグするときに困ることになるので、
   自分以外の人も使うプログラムではまず defvar してから必要に応じて
   setq すべき。

ということになります。

-- 
TAKAHASHI Naoto
ntakahas@...
http://www.m17n.org/ntakahas/