Calls to struct methods and immutable
bearophile
bearophileHUGS at lycos.com
Thu Nov 15 06:06:56 PST 2012
Joseph Rushton Wakeling:
> auto foo = cast(immutable) Foo(3, 4);
Strive to write D code as much cast-free as possible, because
they are dangerous.
> The reason seems pretty evident -- making the instance
> immutable means that the temporary internal variable c in
> check() can't be (over)written.
You are wrong. A version of your code:
import std.math;
struct Foo {
int a, b;
/*
this(int a, int b) {
this.a = a;
this.b = b;
}
*/
void check() const pure nothrow {
immutable real p = a ^^ 2 + b ^^ 2;
assert(sqrt(p) < 10);
}
}
void main() {
auto foo = immutable(Foo)(3, 4);
// immutable foo = Foo(3, 4); // simpler alternative
foo.check();
}
Bye,
bearophile
More information about the Digitalmars-d-learn
mailing list