import std.stdio;
import std.functional;
void main()
{
writefln("uint.max : %s", uint.max);
writefln("Toplam : %s", Topla(1, 2_147_483_647));
}
int Topla(int sayi1, int sayi2)
{
// 1 - assert(sayi1 + sayi2 < int.max, "Sayıların toplamı int sınırını aşıyor.");
// 2 - assert(sayi1 + sayi2 > 0, "Sayıların toplamı int sınırını aşıyor.");
assert(sayi1 + sayi2 >= 1, "Sayıların toplamı int sınırını aşıyor.");
return sayi1 + sayi2;
}
Yukarıdaki kodda amacım assert kullanımını örneklemek için Topla() metodu içinde int sınırını aşan bir toplam elde etmek ve bunu assert kullanarak yakalamaktı. Ancak işler umduğum gibi gitmedi.
-
olarak işaretledğim satırda toplam değeri sınırı aşınca eksi değer aldığı için kontrol deyimi TRUE sonucunu üretti ve assert işleme izin verdi.
-
assert deyiminde ise daha farklı bir durum var. Sonuç eksi bir değer olmasına rağmen assert sesini çıkarmadı.
Son assert deyimi çalıştı ancak o da Topla(0, 0); gibi bir çağrı için hata üretiyor. Oysa bu çağrı ne kadar anlamsız olsada kurallara uygun ve işletilebilir bir çağrı.
Dolayısıyla öncelikle sorunum bunlar diğer taraftan assert kullanımı ile ilgili etkileyici örneklerle karşılaştıysanız yada aklınıza böyle örnekler geliyorsa paylaşırsanız çok sevinirim. Sunum için bir şeyler hazırlamaya çalışıyorum.
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]