Oluşturma araçları - agresif bitler

Cem Posnick
Jeff Posnick

ECMAScript 6 taslak spesifikasyonu şimdiden modern JavaScript geliştiricisine birçok fayda sağlamıştır. Önceki bir gönderide bazı yeni koleksiyon sınıflarını ve for..of yineleme döngüsünü ele almıştık. Bu gönderide, for..of döngüleriyle yakından bağlantılı olan bir konuyu, yani oluşturma işlevlerini ele alacağız.

Oluşturucuların neden ve nasıl kullanılacağının ele alındığı, mükemmel bir materyal sunucusu vardır. Özetle, oluşturanlar yiterleyiciler oluşturan özel işlevlerdir. Yineleyiciler, next() yöntemine sahip olan ve bir değer elde etmek için çağrılabilen nesnelerdir. Bir oluşturma işlevinde, yield anahtar kelimesi next() değerini sağlar. yield askıya alma işlevini kullanmak, oluşturucu işlevinin yürütülmesini, next() tekrar çağrılana kadar durumu korur. Bu noktada kod, başka bir değere yield'e kadar (veya oluşturma aracı işlevi sona erene kadar) tekrar başlayıp devam eder. Oluşturma işlevleri için, bunları Fibonacci dizisindeki sayıları yinelemek üzere kullanma gibi, birkaç standart kullanım alanı vardır.

Temel bilgileri bir kenara bırakarak, oluşturucularla çalışmanın bazı ganimetlerini (veya "garip bitler") kapsayan bir JavaScript örneğini inceleyelim. Kod genelinde kapsamlı yorumlar vardır ve okumadan önce kodun canlı sürümünü inceleyebilirsiniz:

Peki bu kodun bazı önemli noktaları neler?

İlk olarak, bir oluşturucu oluşturulduğunda kendi ayrı durumuna sahip benzersiz bir yineleyici oluşturulur ve parametreleri, davranışı kontrol edebilen oluşturma oluşturucuya aktarabilirsiniz.

İkinci olarak, bir yineleyicinin next() yöntemini çağırırken bir parametre aktarabilirsiniz. Bu değer, önceki yineleyici çağrısında bulunan yield ifadesinin sol tarafındaki öğelere atanır. Bu, yineleyicinin çıktısını değiştirmek için harika bir yoldur. Burada, elde edilen kelimenin büyük harfli olup olmadığını kontrol etmek için bunu kullanıyoruz. Elde edilen ilk değeri etkilemek istiyorsanız bunu, oluşturucunun oluşturucusuna bir parametre aracılığıyla yapın.

Son olarak, oluşturucular sonlu veya sonsuz yinelemeler üretebilir. Sonsuz yinelemeyle çalışıyorsanız yielded değerine dayalı bir tür terminal koşulunuz olduğundan emin olun. Özellikle de iterasyon için for..of kullanırken yanlışlıkla sonsuz döngüler yazmak çok kolaydır. next() çağrıları üzerinden sonlu bir yinelemeyle çalışıyorsanız döndürülen nesnenin .done özelliği, iterasyonun tamamlanıp tamamlanmadığını gösterir.

Bu örneğin, web'de bulunan diğer kaynaklarla birlikte biraz heyecan uyandırdığını ve kendi kodunuzda oluşturucuları nasıl kullanabileceğiniz konusunda sizi düşünmeye teşvik edeceğini umuyoruz. Firefox'un 31'den başlayan sürümleri ve Chrome'un 39 ile başlayan sürümleri yerel olarak oluşturucuları destekler. Regenerator projesi diğer tarayıcılar için oluşturma aracı desteği sunar ve Traceur kullanmak da bir seçenektir.

Bu makaleyi inceleme konusundaki yardımları için Erik Arvidsson'a teşekkür ederiz.