Misalkan saya punya
(setq a 1 b 2)
Bagaimana saya bisa secara elegan menukar nilai a
dan b
tanpa menggunakan variabel sementara?
Sementara saya ingat operasi swap dari contoh pemrograman bertahun-tahun yang lalu, saya tidak berpikir saya pernah membutuhkan operasi "swap" seperti itu. Jadi di mana Anda menemukan bahwa Anda membutuhkan hal seperti itu?
—
Stefan
@Stefan kali ini, saya sedang menulis sebuah fungsi yang membutuhkan dua argumen, dan saya ingin memastikan bahwa argumen pertama adalah yang lebih kecil dari keduanya.
—
PythonNut
@PythonNut, Anda bisa mengikat argumen pertama
—
Mark Karpov
(min a b)
dan kedua (max a b)
. Ini adalah salah satu solusinya. Beberapa akan berpendapat bahwa ini membutuhkan dua perbandingan ketika satu sudah cukup, itu benar. Anda dapat mengatasinya dengan satu perbandingan dengan fungsi yang lebih fungsional, misalnya menggunakan bilah penataan (cl-destructuring-bind (a . b) (if (< a b) (cons a b) (cons b a)) ...)
. Ini cara lain.
@Ark benar, tapi, setidaknya bagiku, rasanya seperti memukul lalat dengan granat tangan.
—
PythonNut
cl-destructuring-bind
adalah alat yang sangat kuat untuk pekerjaan ini.