When D is not nice
Frank Benoit
keinfarbton at googlemail.com
Sun Jul 6 14:17:39 PDT 2008
Simen Kjaeraas schrieb:
> Frank Benoit <keinfarbton at googlemail.com> wrote:
>
>> String concatenation in Java:
>>
>> "abc " + a + " bla";
>>
>> where a is an interface ref.
>>
>> Ported to D, this look like this:
>>
>> "abc " ~ (cast(Object)a).toString ~ " bla";
>>
>> This are 3 steps more:
>> 1.) explicit cast to Object (interface/class compatibility!)
>> 2.) explicit call to toString
>> 3.) put additional parentheses
>>
>> I would be happy if we could remove all three of this annoying points.
>
>
>
> interface A
> {
> string opCat(string rhs);
> string opCat_r(string lhs);
> }
>
> class B : A
> {
> string opCat(string rhs)
> {
> return toString() ~ rhs;
> }
>
> string opCat_r(string lhs)
> {
> return lhs ~ toString();
> }
>
> string toString()
> {
> return SomeString;
> }
> }
>
> This works for me.
>
> -- Simen
My intention was not to ask how to solve it for a certain interface.
Instead i was trying to show a flaw in the language design.
Even if i would add object.Object method to /every/ interface, then
still an interface ref is NOT implicit castable to an Object ref. And i
would need to reimplement all those methods in every class that
implements the interface.
More information about the Digitalmars-d
mailing list