Làm cách nào tôi có thể trao đổi hai biến trong LISP mà không sử dụng biến thứ ba?Trao đổi biến LISP
7
A
Trả lời
25
(rotatef a b)
1
Ngoài ra:
(let ((ab) (ba)) ...)
1
Một cách khác, "song song setf":
(psetf abba)
+3
Sự khác biệt giữa 'rotatef' và' psetf' là nếu 'a' và' b' thực sự phức tạp hơn, thì 'psetf' sẽ đánh giá bất kỳ biểu mẫu con nào hai lần, nhưng' rotatef' sẽ đánh giá chúng chỉ một lần, đó là những gì người ta thường muốn. –
-3
Phương pháp thay thế khủng khiếp và chỉ hoạt động với các giá trị số, nhưng tổng quát hơn và không phụ thuộc vào cú pháp:
a = a^b
b = a^b
a = a^b
Giả sử a và b được chỉ định trước,^có nghĩa là thay thế độc quyền logic.
0
Tuy nhiên, một cách tiếp cận:
(setf (values a b) (values b a))
Các vấn đề liên quan
- 1. Trao đổi các phần tử trong danh sách Lisp chung
- 2. RabbitMQ Trao đổi chủ đề: 1 Trao đổi so với nhiều trao đổi
- 3. Interactive Emacs Lisp chức năng để trao đổi hai từ với nhau
- 4. Cách Lisp phổ biến để đổi tên không gian tên
- 5. C# đan cài Trao đổi
- 6. Phổ biến nhất Lisp IDE
- 7. Trao đổi mã nóng trong Xcode?
- 8. Trao đổi chủ đề và trao đổi trực tiếp trong RabbitMQ
- 9. Khi sử dụng trao đổi trực tiếp qua trao đổi fanout
- 10. Vòng qua các biến trong Lisp
- 11. sql trao đổi giá trị khóa chính
- 12. Trao đổi các phần tử trong NSMutableArray
- 13. trao đổi trên danh sách thả xuống
- 14. trao đổi FB thẻ api thiếu redirect_uri
- 15. Trao đổi các hàng trong JQuery
- 16. Trao đổi hình ảnh với Jquery
- 17. VmSize = bộ nhớ vật lý + trao đổi?
- 18. Trao đổi thư HL7 qua internet
- 19. Gỡ lỗi trao đổi nóng với Android
- 20. Trao đổi Clojure! nguyên tử dequeuing
- 21. Việc trao đổi hai vars trong scala
- 22. Trao đổi hình ảnh src với jquery
- 23. Biến tĩnh thực sự an toàn để trao đổi dữ liệu giữa các hoạt động?
- 24. Trao đổi các khóa và giá trị trong một băm
- 25. Cách mở rộng sự kiện trao đổi với JavaScript
- 26. Có các macro biến đổi toàn bộ chương trình trong Lisp hoặc Lược đồ không?
- 27. Đổi tên lambda trong Common Lisp
- 28. Tại sao toán tử trao đổi/trao đổi không tồn tại trong các ngôn ngữ mệnh lệnh hoặc OO như C/C++/C#/Java ...?
- 29. Trao đổi dữ liệu động (DDE) - Vẫn có liên quan?
- 30. Javascript - trao đổi trong phạm vi <option>
Điều đó không thay đổi giá trị của biến, nó chỉ tạo ra các ràng buộc từ vựng mới. –
@ dmitry-vk: Đó là tất cả những gì bạn cần. Nó phụ thuộc vào những gì bạn đang làm, tất nhiên. – khedron