• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

'Let out' eine Variable aus einem Sub, hält es 'lokal'

  • Ersteller Ersteller x11start
  • Erstellt am Erstellt am

x11start

Guest
in den letzten Zeiten Ich habe versucht, meine Lippe in eine Art "Mosaik" zu verwandeln, in der die verschiedenen farbigen Fliesen durch so viele unabhängige "Module" repräsentiert werden, die eine bestimmte Funktion erfüllen.
Dies erlaubt mir, eine bessere Verwaltung der Variablen zu haben, da jedes Modul "interne" Variablen benötigt (und damit "lokal": sie zurückkehren, um nil zu sein, wenn sie aus dem "Modul" kommen); von Variablen in "Eingabe": d.h. die Variablen, die von der Hauptsub... und den Variablen ausgegeben werden.
Letztere stellen ein kleines Problem dar: Sie müssen "globals" sein, damit sie sie verwenden können, sobald sie aus dem Unterteil sind.
Ich dachte sofort, ich würde ihr das "&"-Symbol vorschreiben, um sie sofort zu erkennen; aufgrund der Tatsache, dass Autolisp sehr "tolerant" ist mit Namen und erfordert nicht, dass sie bestimmte Zeichen haben. Diese Lösung ist nicht die optimale Lösung, da an einer Stelle noch Größen definiert sind, die dann nil in einer anderen platziert werden müssen!
die Lippe des 'Guru' dieser Sprache ruhiger zu analysieren.... Ich fand heraus (!) dass ich, wenn in meinem 'Modul' (der Sub oder der 'Text des Mosaiks', was ich sagen werde), eine Variable schreibe. . einfach, allein, ohne Befehl; dies kann "hoch" von außen sein, dann weiterhin nil einmal aus dem Sub bleiben!

"groß! Sie entdeckten heißes Wasser!" clap clap clap (ironisch applause!). .

Es spielt keine Rolle, selbst wenn ich seit Jahren Programme in lisp gemacht habe, dazu (und wie nützlich es war!) Ich habe nie daran gedacht, also will ich es mit dir teilen!

Ich erkläre es besser.


(defun x11:gstring (bit msg def / txt)
(setq txt (getstring bit msg)); Eingabestring
(if (= txt) (setq txt def) ; wenn txt=nil => txt = default)

; Ausgangsgröße:


)

spekulieren, um diesen Code in einer Datei namens gstring.lsp zu speichern, dann laden Sie ihn mit ( laden Sie "gstring") und starten Sie ihn, indem Sie ihm einige Parameter ankommen:

(x11:gstring bit msg def)

in welcher : bit = t (Akzeptieren des Raumes) - bit = nil es nicht akzeptiert (es nimmt es bereits als Senden an)
msg = Message string für Frage:
beginnt in der Regel mit "\n zu Chef und Begriff zu gehen. mit Standard <si> "
es. "indiziert die Stadt <roma> " Raum nach > zu verlassen Fragezeichen.

def = Standardwert (wenn Bit = nil): Wert, der dem durch Senden erhaltenen Wert entspricht

z.
(x11:gstring nil "\nindiziert die Stadt <roma> "Roman"

Im Sub x11:gstring gibt es jedoch keine 'globalen' Variablen: Die txt-Variable, die das zu veröffentlichende Ergebnis darstellt, wird durch Schreiben des Namens nach dem '/'-Symbol "lokal" gemacht.
aber es gibt ein bestimmtes: Ich lege die Variable txt, 'nude und rohe' unter dem Kommentar 'variable out:'.
Das erlaubt mir, es zu haben, wenn ich aus dem Sub komme!

wenn ich tatsächlich meinen Sub nenne mit:

(setq name (x11:gstring nil "\nindicateds the city <roma> "Roman"

Ich kann dies tun, so dass nun die Namevariable den vom Sub geschriebenen Wert hat (z.B. "roma"), während die txt-Variable weiterhin nil anwendet, da sie den Wert nur innerhalb von x11:gstring annahm.

offensichtlich kann die 'output' Variable nur 1 sein... aber in lisp gibt es Listen!

Ich hoffe, das kann für jemanden nützlich sein.</roma></roma></roma></si>
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben