Sequence
- Kotlin kursu
- Uzman
- Ders 40/47
- 5 dk
Sequence ile tembel hesap optimizasyonu öğrenirsin.
Sequence nedir?
Sequence, Kotlin'de tembel (lazy) hesaplanan bir akıştır. Her adımı yalnızca sonuca ihtiyaç duyulunca çalışır; ara koleksiyon yaratmaz.
Örnek: (1..10).asSequence().map { it * 2 }.filter { it > 5 }.toList(). List ile her adım yeni bir liste yaratır; Sequence ise tek geçişte hesaplar. Bu, büyük verilerde hem allocation'ı hem zamanı düşürür. Bu dersteki seqInfo modeli konsepti gösterir.
Sequence ve List farkı
List, her adımda yeni bir koleksiyon yaratır (istekli). Sequence ise tek geçişte, yalnızca gereken kadar elemanı işler (tembel).
Örneğin (1..3).asSequence().map { it * 2 }.joinToString() sonucu "2, 4, 6" olur; ara liste oluşmaz. Küçük veride fark azdır; milyon elemanda Sequence hem bellek hem zaman kazandırır. Sonuca ulaşmak için bir terminal operasyon (toList, joinToString) gerekir.
Uygulama seqInfo yaz
fun seqInfo(): String tanımla. Gövde (1..3).asSequence().map { it * 2 }.joinToString() döndürsün. main içinde println(seqInfo()) yaz.
Başlangıç kodu
// seqInfo fonksiyonunu ekle
fun main() {
// seqInfo sonucunu yazdır
}Örnek çözüm
fun seqInfo(): String = (1..3).asSequence().map { it * 2 }.joinToString()
fun main() {
println(seqInfo())
}Beklenen çıktı
2, 4, 6
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Sequence hangi hesaplamayı yapar?
A Sequence does deferred computation.- Hemen
- Tembel Doğru cevap
- Asenkron
- Paralel
Açıklama: Sequence tembel (lazy) hesaplanır.
2 asSequence çağrısını tamamla
val s = (1..10).____()
val s = (1..10).asSequence()
Açıklama: asSequence() bir aralığı tembel akışa çevirir.
3 Sequence parçalarını eşle
| Kavram | Anlamı |
|---|---|
Sequence |
Tembel akış |
asSequence |
Dönüştürücü |
lazy |
Ertelenmiş |
joinToString |
Terminal operasyon |