July 31, 2019 opEquals when your type occurs on the right hand side of an equality test | ||||
---|---|---|---|---|
| ||||
I am creating a specialized bit pattern (secretly represented as a uint) as a struct S, but want to avoid `alias this` to maintain encapsulation excepting where I overtly say. Specifically, I want to avoid making arithmetic and inequalities available for S. I have written opEquals to compare an S to a uint. How do I write code to compare a uint to an S? |
July 31, 2019 Re: opEquals when your type occurs on the right hand side of an equality test | ||||
---|---|---|---|---|
| ||||
Posted in reply to NonNull | On 07/31/2019 01:03 PM, NonNull wrote:
> I am creating a specialized bit pattern (secretly represented as a uint) as a struct S, but want to avoid `alias this` to maintain encapsulation excepting where I overtly say. Specifically, I want to avoid making arithmetic and inequalities available for S.
>
> I have written opEquals to compare an S to a uint.
>
> How do I write code to compare a uint to an S?
>
I didn't know that it works both ways already:
import std.stdio;
struct S {
bool opEquals(uint u) {
writeln("called");
return true;
}
}
void main() {
S s;
s == 7;
7 == s;
}
There are two "called"s printed...
Ali
|
Copyright © 1999-2021 by the D Language Foundation