概要 - 旧バージョンの AutoCAD との defun の互換性(AutoLISP)

defun の内部実行方式が、AutoCAD 2000 で変更されました。

旧バージョンの AutoCAD からのアップグレード ユーザの大多数は、この変更を意識する必要はありません。次のコードで示すように、この変更は、たとえばある関数を別の関数に追加することによって defun 定義をリスト構造として処理した AutoLISP のコードにのみ影響します。

(append s::startup (cdr mystartup))

このような状況では、defun-q を使用して関数を定義します。defun 関数をリストとして使用しようとすると、エラーが起こります。次の例は、エラーを示しています。

(defun foo (x) 4)
foo

(append foo '(3 4))
; error: Invalid attempt to access a compiled function definition.
You may want to define it using defun-q: #<SUBR @024bda3c FOO>

このエラー メッセージは、defun の代わりに defun-q を使用できることを知らせています。defun-q 関数は、旧バージョンとの下位互換性を保持するためにのみ提供されているため、他の目的には使用しないでください。