how to make '==' safe for classes?

Jonathan M Davis newsgroup.d at jmdavisprog.com
Sun Oct 28 19:05:46 UTC 2018


On Sunday, October 28, 2018 12:56:10 PM MDT ikod via Digitalmars-d-learn 
wrote:
> On Sunday, 28 October 2018 at 18:00:06 UTC, Stanislav Blinov
>
> wrote:
> > On Sunday, 28 October 2018 at 12:38:12 UTC, ikod wrote:
> >> and object.opEquals(a,b) do not inherits safety from class C
> >> properties, and also I can't override it.
> >
> > Yep. Since Object is the base class and it defines opEquals as:
> object.opEquals(a,b) even is not a Object member function, it's
> free function.
>
> It looks a bit unnatural for me, but thanks for confirmation!

It may seem weird at first, but it actually solves several problems that you
get when simple calling a.obEquals(b) - the most obvious of which is that
a.opEquals(b) has to worry about null, which opEquals(a, b) solves for you,
but if you look at the implementation I posted elsewhere in the thread, it
solves some other problems as well. It's one of those places where D was
able to learn from problems that languages that came before it had.
Unfortunately, the attribute problem is _not_ one of those areas.

- Jonathan M Davis





More information about the Digitalmars-d-learn mailing list