Wie Leben mit Emacs Lisp dynamische scoping?

Habe ich gelernt, Clojure zuvor und mag die Sprache. Ich Liebe auch Emacs und haben gehackt einige einfache Sachen mit Emacs Lisp. Es ist eine Sache, die verhindert, das ich mich mental von etwas mehr erhebliche mit Elisp obwohl. Es ist das Konzept der dynamischen scoping. Ich bin nur erschrocken, da es so Fremd zu mir und riecht wie semi-globalen Variablen.

Also mit Variablendeklarationen ich weiß nicht, welche Dinge sind sicher und welche gefährlich sind. Von dem, was ich verstanden hab, Variablen, die mit setq fallen unter dynamischen scoping (ist das richtig?) Was ist mit let Variablen? Irgendwo habe ich mal gelesen, dass, lassen Sie uns können Sie tun, schlichte lexikalische scoping, aber woanders habe ich gelesen, dass lassen vars auch dynamisch scoped.

Ich quess meine größte Sorge ist, dass mein code (mit setq oder lassen) versehentlich einige Variablen von Plattform-oder third-party-code, dass ich call oder, dass nach einem solchen Anruf meiner lokalen Variablen Durcheinander versehentlich. Wie kann ich diese vermeiden?

Gibt es ein paar einfache Faustregeln, kann ich nur Folgen und genau wissen, was passiert, mit Rahmen, ohne gebissen zu werden, in einigen seltsamen, schwer zu Debuggen Weg?

  • Genial Antworten, danke!
  • Sehr schöne Frage!
InformationsquelleAutor auramo | 2010-09-24
Schreibe einen Kommentar