int[] as constructor
Steven Schveighoffer
schveiguy at gmail.com
Wed Dec 5 17:00:32 UTC 2018
On 12/5/18 5:34 AM, Stanislav Blinov wrote:
> On Tuesday, 4 December 2018 at 23:28:42 UTC, H. S. Teoh wrote:
>
>> Well OK, for int[] it's kinda silly 'cos that's the default, but in my
>> code I've often had to write things like:
>>
>> auto z = cast(float[]) [ 1.0, 2.0, 3.0 ];
>
> Err,
>
> auto z = [ 1.0f, 2, 3 ];
>
> ?
But that's only because 2 promotes to float. If it's 2.0 (or let's make
it 2.1 so you can't have the int cop-out), then you have to tag all the
elements (a bit annoying).
However, you can also do
float[] z = [1.0, 2.0, 3.0];
which is what I'd prefer, and isn't as verbose as either the cast or the
OP's suggestion. But in cases where you aren't assigning a variable,
float[](1.0, 2.1, 3.5) would be more desirable than casting (since
casting is dangerous).
I would say we should allow such usage. And it doesn't conflict with
array multi-dimensional allocation, since that accepts not a literal,
but an argument list of sizes.
-Steve
More information about the Digitalmars-d-learn
mailing list