CodeBlanks Logo Icon CodeBlanks

yield anahtar kelimesi

PHP kursu · Uzman · Ders 1/54

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

  1. 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.

  2. 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--;
        }
    }
    
  3. 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

Uzman bölümündeki tüm dersler