D.ershane Çözümleri Ddili.org

Tembel Değerlendirmeler Çözümleri

  1. Bu durumda tek sayılı indeksli elemanlar sabit bir değerle değiştirilecekler. Bu yüzden o parametreyi bir giriş değeri olarak kullanılacağı için in belirteciyle tanımlayabiliriz:
  2. import std.stdio;
    
    void tekİndeksleriDeğiştir(int[] dizi, in int değer)
    {
        foreach (i, ref eleman; dizi) {
            const bool tekİndeks = ((i % 2) == 1);
    
            if (tekİndeks) {
                eleman = değer;
            }
        }
    }
    
    void main()
    {
        int[] dizi = [ 0, 11, 22, 33, 44, 55 ];
        tekİndeksleriDeğiştir(dizi, 7);
    
        writeln(dizi);
    }
    

    foreach içinde dizinin asıl elemanlarını değiştirmek için ref kullanıldığına da dikkat edin. Yoksa elemanların kendileri değil, kopyaları değiştirilirdi.

  3. Sabit değerler kullanabilmeye ek olarak, bir işlevin döndürdüğü değerleri de kullanabilmek için değerin gönderildiği parametreyi lazy olarak tanımlayabiliriz. Böylece işlev içinde değer parametresine her erişildiğinde o işlev çağrılır ve o işlevin döndürdüğü değer kullanılır.
  4. import std.stdio;
    import std.random;
    
    void tekİndeksleriDeğiştir(int[] dizi, lazy int değer)
    {
        foreach (i, ref eleman; dizi) {
            const bool tekİndeks = ((i % 2) == 1);
    
            if (tekİndeks) {
                eleman = değer;
            }
        }
    }
    
    void main()
    {
        int[] dizi = [ 0, 11, 22, 33, 44, 55 ];
    
        // Sabit değerler de hâlâ çalışırlar
        tekİndeksleriDeğiştir(dizi, 7);
        writeln(dizi);
    
        // Şimdi bir işlevin döndürdüğü değerleri de
        // kullandırabiliyoruz
        tekİndeksleriDeğiştir(dizi, uniform(100, 200));
        writeln(dizi);
    }