opEquals does not work?
Jonathan M Davis
jmdavisProg at gmx.com
Fri Jun 7 17:06:06 PDT 2013
On Friday, June 07, 2013 14:53:44 Ali Çehreli wrote:
> On 06/07/2013 02:18 PM, Jonathan M Davis wrote:
> > I have an open pull request as part of the move to getting rid of
>
> opEquals,
>
> > opCmp, toHash, and toString from Object, and it would make it so that you
>
> > could use something other than Object:
> I hope it supports delegate-taking toString overload for classes.[1]
It should be perfectly possible to declare such an overload now. It just won't
work when used through Object. If it doesn't work, then I expect that that's a
bug in formattedWrite and friends.
As far as overriding goes though, that'll depend on what the base classes of a
class have declared. If they all declare toString without a delegate, then
that's what you'd have to override to use toString using references of their
type, whereas if they use the toString which takes a delegate, then that's
what you'd have to override. But I don't see any reason that you can't have
both just so long as the type of the reference that you're using has it.
Howver, I supposed that a potential problem with formattedWrite and friends
is that if you have two toString methods, it has to pick which one to use, and
right now, it probably just picks the one from Object. Better behavior would
be to us the delegate one if it's there and fall back to the non-delegate
version if it's not. Long term though, formattedWrite et al will probably have
the potential of not working at all with a class if we fully remove it from
Object ike we intend to, since then there's no guarantee that a class or any
of its base classes have even declared any toString.
In any case, if toString with a delegate doesn't work with formattedWrite et
al, then we need an enhancement request for that to be fixed.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list