Pratikte ne zaman letfn kullanmalıyım? Yerel işlevler ve yerel işlevler istemediğim durumlar nedir?izin clojure yerel işlevleri tanımlamak için letfn?
cevap
İhtiyacım olan tek şey yerel bir işlevse veya 2 ... veya 3 ... Onları izin vereceğim. Fonksiyonların ve işlevlerin bir karışımına izin vermem gerekirse, sadece normal bir izin kullanacağım. letfning ve salıvermek bunu yapmak için çok ayrıntılı bir yol olacaktır. Bununla birlikte, yerel işlevlerinizde karşılıklı olarak özyinelemeye ihtiyacınız varsa, bunları iki şekilde de bırakmak zorunda kalacaksınız.
Kısa versiyon: Daha iyi göründüğünde ve uygun olduğunda bunları kullanın. Kullanmak için zor ve hızlı kurallar yoktur. Onlar sadece Clojure araç kutusundaki araçlar.
İyi eğlenceler! Bu şekilde tek bir formda fonksiyonları olmayan fonksiyonlar hem kümesi tanımlamak ve hatta önceki tanımlara dönüp bakabileceğiniz:
(let [f (fn [x] ....)
value (reduce f some-collection)
foo bar]
.....)
letfn
gerçekten
Normalde let
kullanımı daha kolay ve kıvrımlara var Sadece birbirini tekrarlayan birden çok işlevi tanımlamak istediğinizde gereklidir. Bu durumda let
çalışmaz, çünkü özyinelemeli referansları desteklemez.
- 1. Emacs + Slime/leiningen-Swank + Clojure işlev tanımlamak için atlama
- 2. İki işlevi tanımlamak için makroyu nasıl oluşturabilirim? Clojure
- 3. Yerel kaynak C3 için izin verilmiyor
- 4. Clojure: Alınan bir formu yerel kapsamda nasıl değerlendirilir?
- 5. Ortamları tanımlamak için
- 6. F #: Aşırı yükleme işlevleri
- 7. Visual Studio: Kişinin kendi kod parçacıklarında kullanmak için özel işlevleri tanımlamak mümkün mü?
- 8. clojure için Slimv ayarları
- 9. Data.table için Sarıcı işlevleri
- 10. Veri türü için kendi Ord tanımlamak (Haskell)
- 11. Ad alanının işlevleri nasıl listelenir?
- 12. Neden gözükmüyor? clojure geçici vektörler için işlev?
- 13. Clojure
- 14. Clojure
- 15. Clojure
- 16. Clojure
- 17. Clojure
- 18. Blok kapsülleme ve yerel kapsülleme - izin ver
- 19. Delphi istisnaları yerel değişkenleri görmeme izin vermiyor
- 20. Clojure
- 21. Clojure
- 22. Scala'da kaldırma işlevleri
- 23. Clojure
- 24. Str-utils işlevleri yerine ne kullanılır?
- 25. Clojure
- 26. Clojure
- 27. Clojure
- 28. clojure
- 29. Yerel işlevler için Sarıcı
- 30. Uzak bir deposu "tanımlamak" için basit bir yol var mı?
Basit bir özyineleme için bile (vücudun kendisinde kullandığı bir işlev) bir letfn gerekli olduğunu unutmayın. – fmjrey
Bir işlev şu şekilde kendini ifade edebilir: '(fn foo [x] .... (foo ...) ...)' – mikera
Evet gerçekten! Her ne kadar izin veren bir formda, aynı fn için iki isme sahip olsa da (izin veren bir isim, diğeri fn biçiminde) ya da aynı adı iki kez tekrarlayarak, daha iyi olabilir. – fmjrey