สมมติว่าฉันมี
(setq a 1 b 2)
ฉันจะสลับค่าของaและbโดยไม่ใช้ตัวแปรชั่วคราวได้อย่างไร
ในขณะที่ฉันจำการดำเนินการสลับจากตัวอย่างการเขียนโปรแกรมเมื่อหลายปีก่อนฉันไม่คิดว่าฉันต้องการการดำเนินการ "สลับ" เช่นนี้มาก่อน ดังนั้นคุณจะพบสิ่งที่คุณต้องการสิ่งที่?
—
สเตฟาน
@ สเตฟานในเวลานี้ฉันกำลังเขียนฟังก์ชั่นที่ใช้สองข้อโต้แย้งและฉันต้องการให้แน่ใจว่าอาร์กิวเมนต์แรกมีขนาดเล็กกว่าของทั้งสอง
—
PythonNut
@PythonNut ที่ดีที่คุณสามารถผูกอาร์กิวเมนต์แรกและครั้งที่สองไป
—
Mark Karpov
(min a b) (max a b)นี่คือทางออกหนึ่ง บางคนอาจแย้งว่านี่ต้องใช้การเปรียบเทียบสองแบบเมื่อมีพอเพียง (cl-destructuring-bind (a . b) (if (< a b) (cons a b) (cons b a)) ...)คุณสามารถจัดการกับมันด้วยการเปรียบเทียบในลักษณะการทำงานมากขึ้นยังคงเป็นเช่นใช้ผูก destructuring นี่เป็นอีกวิธีหนึ่ง
@ Mark จริง แต่อย่างน้อยสำหรับฉันที่รู้สึกเหมือนแมลงวันตบกับระเบิดมือ
—
PythonNut
cl-destructuring-bindเป็นเครื่องมือที่ทรงพลังสำหรับงานนี้