sync notes(auto)
This commit is contained in:
parent
c37151a727
commit
7dee21406a
1 changed files with 7 additions and 1 deletions
|
@ -4,9 +4,15 @@
|
|||
そもそも・・・
|
||||
defvar, defparameterはダイナミックスコープの変数(スペシャル変数)を定義する。
|
||||
letや未定義時のsetfはレキシカルスコープの変数を定義する。
|
||||
グローバル変数をレキシカルに作る方法は(少なくとも標準的には)無い。 上記未定義時のsetfは期待した動作をするが、推奨されていない。
|
||||
[[20240428125606 ダイナミックスコープ レキシカルスコープ |ダイナミックスコープ レキシカルスコープ]]
|
||||
|
||||
- defvar: 値が定義されていなければ定義する。上書きしようとしても存在している場合はできない。
|
||||
cf. [lispguide.xml](https://google.github.io/styleguide/lispguide.xml?showone=Global_variables_and_constants#Global_variables_and_constants)
|
||||
> Common Lisp does not have global lexical variables
|
||||
|
||||
- defvar: 値が定義されていなければ定義する。上書きしようとしても存在している場合はできない(というか無視される)。
|
||||
- defparameter: 定義されているかに関係なく定義する。すでに定義されていたら上書きする。
|
||||
- defconstant: 定数を定義する。複数回定義しようとしたり、値を変更しようとするとエラーになる。
|
||||
- setf: 定義された変数を変更するために使う。定義されていない変数を変更しようとすると、新規作成され、警告が出る。
|
||||
- setq: 使わなくてよい。 setfはsetqの上位互換。
|
||||
|
||||
|
|
Loading…
Reference in a new issue