Başlangıç ile:
auto foo(T)(T n) if (isNumeric!T) {
// ignore this for now
}
foo onun Jenerik türden bir argüman alır jenerik fonksiyonudur. if (isNumeric!T)
, fo'nun türünün sayısal olduğunu garanti eden std.traits numaralı derleme zamanı denetimidir. Sayısal olmayan türler çalışmayacak. Dönüş tipi çıkar ve bu durumda bir delege.
Bu:
(T m) {return m > n;}; //returned from foo
bir delegate literal (or closure) 'dir. Temelde devlet ile bir fonksiyon gösterici. Bu durumda, foo'ya iletilen n
parametresi üzerinden kapanır. Örnekte:
auto hoo5 = foo!int(1000);
etkili bir işleve çevrilmiştir: Eğer
hoo5
çağırdığınızda Yani, onun argümanı 1000 büyükse belirten bir boolean döndüren
bool hoo5 (int x) { return x > 1000; }
- ama yalnızca belirli durumlarda . Böyle foo ararsanız
:
auto hoo5 = foo!double(1.2345);
Bunu argüman (çift) 1.2345 büyükse belirten bir boolean döndüren bir işleve bir referans olsun.
Yazım hataları var. Onu tamir ettim. Teşekkürler! – Nate
Gerçekten iyi açıklıyorsunuz. Şimdi anlıyorum. Teşekkür ederim. – Nate