Templates for DRY code
codephantom
me at noyb.com
Sun Jan 7 01:59:19 UTC 2018
On Saturday, 6 January 2018 at 23:32:42 UTC, Paul Backus wrote:
> On Saturday, 6 January 2018 at 03:38:35 UTC, codephantom wrote:
>> or even..
>>
>> a.append( s.to!ConvertToElementType(a) );
>>
>> That's not valid code of course, but the semantics are all
>> contained in that single chunk.
>
> This works:
>
> import std.range.primitives: ElementType;
>
> a ~= s.to!(ElementType!(typeof(a)));
I guess this brings us back to Ali's point about finding the
balance between being explicit and fully automatic.
I certainly prefer:
a.append(s);
vs
a ~= s.to!(ElementType!(typeof(a))); // this hurts by brain ;-)
The only problem with the Ali's suggestion of using append, is we
always bring background knowledge everytime we read and write
code, and, we all know that you cannot append a string to an
array of doubles (that is our background knowledge).
I guess if we knew that you can do that now, then 'a.append(s);'
would be just fine.
But I'm not a big fan of 'implicit' conversions in type safe
languages, even when those conversion are type safe. So there's
yet another balance to get right.
More information about the Digitalmars-d-learn
mailing list