Wie kann ich zwei Variablen in LISP ohne eine dritte Variable austauschen?LISP Variablenaustausch
Antwort
(rotatef a b)
auch:
(let ((ab) (ba)) ...)
Eine weitere Alternative, "parallel setf":
(psetf abba)
Ein Unterschied zwischen 'rotatef' und' psetf' besteht darin, dass, wenn 'a' und' b' wirklich kompliziertere Formen sind,'psetf' alle Unterformulare zweimal auswertet, aber 'rotatef' wird sie nur einmal auswerten, was das ist man würde normalerweise wollen. –
Eher grauenhafte Methode und es funktioniert nur für numerische Werte, aber es ist allgemeiner und nicht Syntax abhängig:
a = a^b
b = a^b
a = a^b
Unter der Annahme, dass A und B vor zugewiesen wurden, die^bedeutet logisch exklusive Alternative.
Noch ein anderer Ansatz:
(setf (values a b) (values b a))
- 1. Äquivalenzklassen LISP
- 2. Lisp Listeniteration
- 3. LISP - Nachkommastellen
- 4. Struct Unterschied zwischen gemeinsamen Lisp und Emacs lisp
- 5. Hilf mir, meinen LISP zu schreiben :) LISP-Umgebungen, Ruby Hashes
- 6. Klassenintrospektion in Common Lisp
- 7. GUI-Programmierung in LISP?
- 8. Lisp Grammatik in Yacc
- 9. Hilfe mit Lisp-Debugger
- 10. ein Lisp-String
- 11. Ein J2ME Lisp?
- 12. In Emacs kopieren Lisp
- 13. Statistikpakete für Common Lisp
- 14. Lisp einfache Frage
- 15. Lisp Funktionsaufruf Fehler
- 16. Vereinigung in Common Lisp
- 17. Der minimalste LISP?
- 18. Ein einfaches Lisp-Programm
- 19. Lisp Assoziationsliste Fehler
- 20. Common Lisp-Übungen/Probleme
- 21. Debug Emacs Lisp Hauptmodus
- 22. Web-Service mit Lisp
- 23. Vektorrechnung in LISP
- 24. Online-Tutorial auf Lisp
- 25. Gemeinsame Lisp graue Ströme
- 26. lisp defclass Makro Problem
- 27. PPRINT in Emacs Lisp?
- 28. Eine Lisp Funktion Verfeinerung
- 29. Mit Lisp in C#
- 30. minderwertig Laufen Lisp
, die nicht die Werte Variablen nicht ändert, es schafft nur neue lexikalische Bindungen. –
@ dmitry-vk: Das ist oft alles, was Sie brauchen. Es hängt natürlich davon ab, was du tust. – khedron