(add-to-list 'flymake-allowed-file-name-masks
'("\\.py\\'" flymake-pylint-init))
と
の違いは何ですか?ここでのアポストロフィの明確な意味は何ですか?
(add-to-list 'flymake-allowed-file-name-masks
'("\\.py\\'" flymake-pylint-init))
と
の違いは何ですか?ここでのアポストロフィの明確な意味は何ですか?
アポストロフィは、次の式(シンボル名)を解析しないようにインタープリタに指示する引用です。従って、'add-to-list
は、評価されることを意図したリスト値を含むシンボルを得る。
シンボルの詳細については、Symbolのドキュメント(具体的には、Symbol Componentsシンボルに名前、値、関数定義、プロパティリストがあります)を参照してください。
ドキュメントを読まないと、私はそれを説明します:Emacs lispのevaluation strategyは値渡しです(名前や参照などではなく)。見積もりが存在しない場合、flymake-allowed-file-name-masks
は値に評価され、add-to-list
はリストに直接作用する必要があります。以下の例外を除き、これは機能します。リストが空の場合、元の変数が指していたものを変更する方法はありません。同じ理由で、リストの先頭に要素を追加することはできません。
これらの2つのケースを機能させるには、実際には変数名が必要です。が指し示すものを変更することができます。
Introduction to Evaluation,Modifying List Variables、およびModifying Existing List Structuresを読むと、おそらく役に立ちます。
box diagramsに精通している場合は、おそらくこれが役立ちます。
はリストにそのsome-var
ポイントを想像してみて:
somevar
|
|
v
--- --- --- --- --- ---
| | |--> | | |--> | | |--> nil
--- --- --- --- --- ---
| | |
| | |
--> rose --> violet --> buttercup
そして、あなたはそのリストの前に何かを置くことを望んでいました。
あなたと仕事をしなければならないすべてはsomevar
でポインタの値であれば、あなたができる最善のは、リストの先頭に新しい要素を入れていますが、実際には(に何somevar
ポイントを変更することはできませんsomevar
がないため、の値はです)。これと同じように:だから
somevar
|
|
v
--- --- --- --- --- --- --- ---
| | |--> | | |--> | | |--> | | |--> nil
--- --- --- --- --- --- --- ---
| | | |
| | | |
--> tulip --> rose --> violet --> buttercup
、独自の'add-to-list
関数を記述するためには、変数名が必要です。
もちろん、'add-to-list
をmacroと書いた場合、そのような制限はありません。
私は今、完璧な概念を得ました! 他の言語での参照によって呼び出すことができます。ありがとう! – kjshim