Pratik Clojure'da (Bölüm 5) rseq
işlev işleminin sabit zamanda yürütüldüğünü okuyordum. Bana doğrusal bir zaman çalışması olması gerektiği görünüyor. Benim için biraz ışık tutabilir mi?Sürekli Zamanda Clojure rseq?
cevap
bu deneyin:
(class [1 2 3 4])
Göreceksin:
clojure.lang.PersistentVector
(class (rseq [1 2 3 4]))
Ve dizisi imp ğu farklıdır: Roma bahsedilen olarak
clojure.lang.APersistentVector$RSeq
, bir sekansa değiştirilmiş bir arabirimdir. Tüm elemanlar, bulundukları yerdeyken tam tersi sırada onlara erişiyorlar.
Sen burada nasıl uygulandığı görmek için RSeq
sınıf görebilirsiniz: Goran Jovic söyledi ama bunu baskı doğrusal gibi https://github.com/clojure/clojure/blob/b578c69d7480f621841ebcafdfa98e33fcb765f6/src/jvm/clojure/lang/APersistentVector.java
Nasıl uygulandığını bilmiyorum, ancak yalnızca sıra arabirimini uygulayan ve yapının (vektör veya sıralanmış harita) ters sırada nasıl geçeceğini bilen bir nesne döndürdüğünü düşünürdüm. Sonuç dizisi tembeldir, bu yüzden tüm yapıyı hemen geçmek zorunda kalmaz.
Bu sabit zamanda yeni arayüzü döndürür. Yani REPL içinde görüntülemek doğrusaldır, ancak bir def içine koymak sabittir.
- 1. aynı zamanda
- 2. Clojure
- 3. Clojure
- 4. Clojure
- 5. Clojure
- 6. Clojure
- 7. Clojure
- 8. Clojure
- 9. Clojure
- 10. Clojure
- 11. Clojure
- 12. Clojure
- 13. clojure
- 14. Aynı zamanda php ile alın ve aynı zamanda alın.
- 15. Noda Zamanda Başlarken
- 16. Doğrusal zamanda sıralama
- 17. Sırasıyla sürekli bağımlılık yüklemesi
- 18. Clojure sprintf?
- 19. Clojure Trigonometri
- 20. olsaydı Clojure
- 21. Clojure şeridiMargin
- 22. Klavye doğru zamanda gösteriliyor iOS7
- 23. Sürekli Saydamlık, sürekli donukluk istemek Resim Görünümü ile Çizilebilir
- 24. Clojure Yesql sorgu dosyasını bulamadı
- 25. Spin UIImageView sürekli
- 26. Sürekli entegrasyon nedir?
- 27. Sürekli değiştir değiştirilebilen
- 28. F # Sürekli döngü
- 29. Sürekli çarpışmalardan kaçınmak - use_once?
- 30. Sürekli Sorgular çalışmıyor
Çok teşekkür ederim! Bu mantıklı. –