・ 評価しないで式を返すってどんなこと?
(quote) 「'
(クォーテーション)」をオンラインマニュアルで調べると、「評価せずに式を返します」とあります。
これって、いったいどんなことができるのか、わかったようで、わかりにくいですよね。
簡単にリストが作れます
例:(setq pt (list 0 0 0) )
↓
(setq
pt '(0 0 0) )
例:(command "LINE"
(list 0 0 0) (list 10 10 0) "")
↓
(command "LINE" '(0 0 0) '(10 10 0) "")
例:(setq ss (ssget
"X" (list (cons 0 "LINE") (cons 62 5) ) ) )
↓
(setq
ss (ssget "X" '( (0 . "LINE) (62 . 5) ) ) )
但し、一般的には、変数は使えません
(mapcar)や(apply)の引数として指定する場合に必要
例:(mapcar '1+ '(1 2 3))
例:(apply 'stract (list "a" "b" "c"))
シンボルをリストにできる
コマンド:(setq
pt1 '(0 0 0) )
(0 0 0)
コマンド:(setq pt2 '(10 10 0) )
(10 10 0)
として、普通は
コマンド:(setq
pt_list (list pt1 pt2) )
( (0 0 0) (10 10 0) )
となりますが
「'
(クォーテーション)」を使うと
コマンド:(setq
pt_list '(pt1 pt2) )
(PT1 PT2)
中身を取り出すには (eval) を使います。
コマンド:(eval (car pt_list) )
(0 0 0)
コマンド:(mapcar 'eval pt_list)
( (0 0 0) (10 10 0) )
だから、どうなの?
というわけで、やっぱり良く分かりません。
ちなみに (setq) て (set) と (quote)
の組み合わせだそうです。
(set (quote a) 10)
↓
(set 'a 10)
↓
(setq a 10)
なんだって
参考文献:岡島正夫 著「AutoLISPの初歩」 (ISBN4-486-01542-8 )