Varsayalım
(setq a 1 b 2)
Geçici bir değişken kullanmadan a
ve b
kullanmadan değerleri nasıl zarif bir şekilde değiştirebilirim ?
Yıllar önce programlama örneklerinden takas operasyonunu hatırlasam da, böyle bir "takas" operasyonuna hiç ihtiyacım olduğunu düşünmüyorum. Öyleyse böyle bir şeye ihtiyacınız olduğunu nereden buldunuz?
—
Stefan
@Stefan bu sefer iki argüman alan bir işlev yazıyorum ve ilk argümanın ikisinden daha küçük olduğundan emin olmak istiyorum.
—
PythonNut
@PythonNut, ilk argümanı
—
Mark Karpov
(min a b)
ve ikincisine bağlayabilirsiniz (max a b)
. Bu bir çözüm. Bazıları bunun yeterli olduğu zaman bunun iki karşılaştırma gerektirdiğini iddia edecektir. Bunu daha işlevsel bir şekilde, örneğin yıkıcı bağlama kullanarak, bir karşılaştırma ile ele alabilirsiniz (cl-destructuring-bind (a . b) (if (< a b) (cons a b) (cons b a)) ...)
. Bu başka bir yol.
@ Doğru, ama, en azından benim için, el bombalarıyla sinek uçurmak gibi geliyor.
—
PythonNut
cl-destructuring-bind
bu iş için gülünç derecede güçlü bir araçtır.