Rant: Date and Time fall short of simplicity in D

Steven Schveighoffer schveiguy at yahoo.com
Fri Mar 29 12:33:35 PDT 2013


On Fri, 29 Mar 2013 15:22:19 -0400, Jonathan M Davis <jmdavisProg at gmx.com>  
wrote:

> On Friday, March 29, 2013 10:03:31 Steven Schveighoffer wrote:

>> 3. I HATE "safe" cast conversions.  If you want to make a conversion,  
>> use
>> a method/property.  I don't even know why D allows overloading casting.
>> Casts are way too blunt for this.
>
> It's how you define coversions to work with std.conv.to, so you could do
> to!DateTime(sysTime), which is shorter and avoids the explicit cast in  
> your
> code (though the cast still occurs within std.conv.to).

This seems like a horrible round-about way of creating a method:

1. Define opCast!OtherType
2. import std.conv
3. instead of using obj.toOtherType, use to!OtherType(obj)

Do we really need to go through this mess?  I understand the point is for  
'to' to be usable in generic code, but can't to be made to call the  
correct method instead of using cast?  I don't really like to using cast  
in this case anyway.

What about something like (omitting necessary constraints in the interest  
of brevity):

T to(T, U)(U u)
{
    return mixin!("u.to" ~ T.stringof);
}

Or at least just alias the opCast to the method.

-Steve


More information about the Digitalmars-d mailing list