onlineapp.d(7): Error: function onlineapp.xDot
without this
cannot be const
Basit ama çözemiyorum! Yani V2'nin kurucusunun mu olmasını istiyor yoksa kastedilen başka bir şey mi? Kod şöyle:
alias i32 = uint;
struct V2 {
i32 x;
i32 y;
}
i32 xDot(const V2 v0, const V2 v1) const {
return v0.x * v1.x + v0.y * v1.y;
} unittest {
auto result = xDot(V2(125, 225), V2(325, 425));
assert(result == 136250);
}
i32 xLen(const V2 n) /* const */ {
return xDot(n, n).floorSqrt;
} unittest {
auto v = V2(125, 225);
assert(v.xLen == 257);
}
i32 floorSqrt(i32 n) {
i32 result = 1;
if(n == 0 || n == 1) {
result = n;
} else {
i32 i = 1;
while(result <= n) {
i++;
result = i * i;
}
result = i - 1;
}
return result;
} unittest {
uint i; import std.math;
foreach(real n; 0..20) {
assert(n.sqrt.floor == floorSqrt(i++));
}
}
Burada, standart kütüphaneden bağımsız grafik uygulamaları için sdb.graph modülümü geliştirmeye çalışıyorum. Her şey şimdilik 2 boyutlu ama henüz karmaşık algoritmalara geçmeden basit bir şeyde takıldım.
Tamam, hala const
olayını tam anlayamıyorum. Zaten nesne aktarılırken kopyası alınmıyor mu?
Neyse hatanın sebebini bilen var mı?
Gerekli/gereksiz kendimi const
kullanıyor buldum; anlama yolunda ve's-selam!