Parametre Serbestliği
hesapla
işlevinin belirsiz sayıda Hesap
nesnesi alabilmesi için parametre listesinin bir Hesap
dilimini ve ...
karakterlerini içermesi gerekir:
double[] hesapla(Hesap[] hesaplar...) { double[] sonuçlar; foreach (hesap; hesaplar) { final switch (hesap.işlem) { case İşlem.toplama: sonuçlar ~= hesap.birinci + hesap.ikinci; break; case İşlem.çıkarma: sonuçlar ~= hesap.birinci - hesap.ikinci; break; case İşlem.çarpma: sonuçlar ~= hesap.birinci * hesap.ikinci; break; case İşlem.bölme: sonuçlar ~= hesap.birinci / hesap.ikinci; break; } } return sonuçlar; }
İşleve gönderilen bütün parametre değerleri hesaplar
dizisinde bulunur. Bütün hesap nesnelerini bir döngüde teker teker kullanarak sonuçları da bir double
dizisine yerleştiriyoruz ve işlevin sonucu olarak döndürüyoruz.
Bütün program:
import std.stdio; enum İşlem { toplama, çıkarma, çarpma, bölme } struct Hesap { İşlem işlem; double birinci; double ikinci; } double[] hesapla(Hesap[] hesaplar...) { double[] sonuçlar; foreach (hesap; hesaplar) { final switch (hesap.işlem) { case İşlem.toplama: sonuçlar ~= hesap.birinci + hesap.ikinci; break; case İşlem.çıkarma: sonuçlar ~= hesap.birinci - hesap.ikinci; break; case İşlem.çarpma: sonuçlar ~= hesap.birinci * hesap.ikinci; break; case İşlem.bölme: sonuçlar ~= hesap.birinci / hesap.ikinci; break; } } return sonuçlar; } void main() { writeln(hesapla(Hesap(İşlem.toplama, 1.1, 2.2), Hesap(İşlem.çıkarma, 3.3, 4.4), Hesap(İşlem.çarpma, 5.5, 6.6), Hesap(İşlem.bölme, 7.7, 8.8))); }
Çıktısı:
[3.3, -1.1, 36.3, 0.875]