Manually check struct invariants
Ali Çehreli
acehreli at yahoo.com
Tue Mar 23 23:44:01 UTC 2021
On 3/23/21 4:14 PM, Imperatorn wrote:> On Tuesday, 23 March 2021 at
22:22:12 UTC, Q. Schroll wrote:
>> For a class object obj, one can use assert(obj) to get its invariants
>> checked. How to do this for structs?
>
> It's called after the constructor has run and before the destructor is
> called.
>
> It's called before entering a member function and after exiting a member
> function.
>
> So technically you could just do like obj.writeln or whatever u have 😁
Just to make sure everyone knows "it" is the invariant block:
struct S {
int i;
int j;
this(int i, int j) {
this.i = i;
this.j = j;
}
invariant() {
assert(i == 2 * j);
}
}
void main() {
auto s = S(1, 10); // Won't pass the invariant check
}
Ali
More information about the Digitalmars-d-learn
mailing list