Merhaba Hocam,
Mümkünse bu dersi biraz çeşitlendirelim derim. En azından sol/sağ birleşim olayının örneklerini arttıralım. İstemediğiniz kadar örnek yazabilirim 😉
Bunlardan biri:
void main()
{
alias TYPE = int;
enum :TYPE { E = 1, M = 8} // M = max.
TYPE a = M;
writefln!"%,?3d"(' ', 10^^++a);
TYPE b = M + 1;
writefln!"%,?3d"(' ', 10^^b++);
// ÇIKTISI: Alt alt 2 adet 1 miyar yazar
// ve iddia ediyorum:
assert(a != b);
}
Örneğin pow(base, power)
işlevi olarak kullanılan işleç, yani base^^power
yanlış anlaşılmalara müsait. Bu örnekte alıştığımız gibi ve her iki şekilde de (++öncesinde, sonrasında++) değişkenleri arttırdım. Derste daha düşük işlem önceliği olduğu için üst alma işleçi(^^) sonraki aşamada işletiliyor. Ama örneğin 2. bölümündeki b değişkeni solda yapışandan bağımsız işliyor tam karşılığı şu olabilir:
auto pow(T)(T a, ref T b) {
scope(exit) b++;
return a^^b;
}
Sevgiler, saygılar...