yield anahtar kelimesi
yield ile değer üreten ve durumu koruyan fonksiyon yazmayı öğrenirsin.
yield anahtar kelimesi nedir?
Bir fonksiyon içinde yield anahtar kelimesi geçiyorsa, bu fonksiyon bir generator fonksiyonudur. Çağrıldığında kod çalışmaz; yerine bir Generator nesnesi döndürülür.
Her yield bir değer üretir ve yürüme o noktada durur. Sonraki istekte kaldığı yerden devam eder. Bu sayede değerler tembel biçimde üretilir; hepsi bir seferde hesaplanmaz.
foreach ile yineleme ve anahtar
foreach bir Generator'ı otomatik yineler: her döngüde bir sonraki yield değerini alır. foreach ($gen as $value) biçimi değeri tek tek verir.
Anahtar da üretmek için yield $key => $value yazarsın; foreach ($gen as $k => $v) ile ikisini birden kolayca alırsın.
Uygulama countUp generator'ını yaz
countUp(int $from, int $to): \Generator fonksiyonunu yaz. $from'dan $to'ya kadar her sayıyı yield ile üret. Sonra foreach ile countUp(2, 6) çağrısını yinele ve her sayıyı yeni satıra yazdır.
Örnek çözümü göster
int $from ve int $to alsın, \Generator döndürsün. for döngüsü ile $from'dan $to'ya kadar sayıları yield ile üret. Sonra foreach (countUp(2, 6) as $n) ile yinele ve echo $n . "\n"; yaz.
Örnek çözüm:
<?php
function countUp(int $from, int $to): \Generator {
for ($i = $from; $i <= $to; $i++) {
yield $i;
}
}
foreach (countUp(2, 6) as $n) {
echo $n . "\n";
}
Kendini test et
-
yield içeren fonksiyonu çağırınca ne olur?
function gen() { yield 1; yield 2; } $g = gen();- Kod hemen çalışır, ilk değer döner
- Generator nesnesi döndürülür, kod henüz çalışmaz
- Dizi döndürülür
- Hata fırlatılır
Cevabı göster
Generator nesnesi döndürülür, kod henüz çalışmaz — Doğru. Generator fonksiyon çağrıldığında Generator nesnesi döner; kod ilk yield'e kadar ilerlemez.
-
countDown generator'ında yield
<?php function countDown(int $n): \Generator { while ($n > 0) { ____ $n--; } }Cevabı göster
<?php function countDown(int $n): \Generator { while ($n > 0) { yield $n; $n--; } } -
Generator kavramlarını eşleştir
- yield
- Değer üretir ve bekler
- Generator
- yield'li fonksiyonun döndürdüğü nesne
- foreach
- Generator'ı otomatik yineler
- yield $k => $v
- Anahtar-değer çifti üretir