タグ付けされた質問 「defvar-local」

1
`setq-local`は何をしますか、そしていつそれを使うべきですか?
ここでSXですべてのドキュメントと多数の投稿を読んだ後でも、バッファローカル変数のすべてのバリエーションについては明確ではありません。 私の理解の概要は次のとおりです。 (defvar foo ..)ファイルの動的変数を宣言します。ただし、変数は(1)defvar ステートメントも含まれていない限り、他のファイルには認識されません。(2)変数はバッファーローカルではなくスコープ内でグローバルです。 (make-variable-buffer-local foo)defvar上記は、変数fooが設定されている場合、変数fooが設定されているすべての場所でバッファローカルとして扱われることをコンパイラと他のすべての人に伝えた後です。そのため、このパターンは、バッファローカル変数を宣言するのに適したスタイルであり、ファイルに両方のステートメントを連続して配置します。 (defvar xxx ...) ;declare xxx with global scope (make-variable-buffer-local 'xxx) ;but now make it buffer-local everywhere 便宜上、(defvar-local xxx ...)フォームは上記の2行の代わりに1行として使用できます。 (defvar-local xxx ...) ;make xxx buffer local everywhere 上記のように宣言されると、変数xxxはsetqステートメントの他の変数と同様に使用できます。 既にグローバルダイナミック変数であるバッファローカル変数の単一のインスタンスが必要な場合は、次の宣言を使用します。最初のステートメントはグローバルスコープの動的変数を宣言し、2番目のステートメントはその変数のバッファーローカルバージョンのインスタンスを現在のバッファーに1つだけ作成します。 (defvar xxx ...) ;declare xxx with global scope (make-local-variable 'xxx) ;make xxx local …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.