タグ付けされた質問 「lexical-binding」

3
字句バインディングを使用したlet内のDefunは、「関数が定義されていることが不明です」というバイトコンパイル警告を表示します。
defun内部でlet字句バインディングを使用してクロージャーを作成することにより、静的変数の効果を取得したい。ただし、ファイルをバイトコンパイルすると、警告が表示されます。私は何か間違ったことをしていますか、そうでない場合、この警告を抑制する方法はありますか? MCVEを作成しました: ;; -*- lexical-binding: t -*- (let ((count 0)) (defun increase-count () (interactive) (setq count (1+ count)) (message "Count is: %d" count)) ;; The warning happens here. (increase-count)) コードは期待どおりに機能します。関数increase-countは「Count is:n」を出力します。nは呼び出されるたびに増加します。ただし、このファイルをバイトコンパイルすると、次の警告が表示されます。 In end of data: mcve.el:11:1:Warning: the function ‘increase-count’ is not known to be defined. increase-countletブロックの最後に呼び出される前に、常に定義する必要があるように思えます。そうではありませんか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.