Thread overview | ||||||
---|---|---|---|---|---|---|
|
December 03, 2018 Initialize static array without explicit length | ||||
---|---|---|---|---|
| ||||
Hi,
I want to create a static array and immediately init it with values:
> uint[xxxxx] data = [1,3,10,44,0,5000];
I don't want to set the length of it explicitly (xxxxx in square brackets). I want that compiler itself counted number of values (in example it is 6).
What should be a right syntax?
|
December 03, 2018 Re: Initialize static array without explicit length | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrey | On Monday, 3 December 2018 at 09:51:45 UTC, Andrey wrote:
> Hi,
> I want to create a static array and immediately init it with values:
>> uint[xxxxx] data = [1,3,10,44,0,5000];
>
> I don't want to set the length of it explicitly (xxxxx in square brackets). I want that compiler itself counted number of values (in example it is 6).
>
> What should be a right syntax?
There's no special syntax for this (even though it's been requested numerous times). However, it's easy to implement in a library:
import std.traits : CommonType;
CommonType!T[T.length] staticArray(T...)(T args)
if (is(CommonType!T))
{
return [args];
}
unittest {
auto a = staticArray(1,2,3,4);
static assert(is(typeof(a) == int[4]));
}
--
Simen
|
December 03, 2018 Re: Initialize static array without explicit length | ||||
---|---|---|---|---|
| ||||
Posted in reply to Simen Kjærås | On Monday, 3 December 2018 at 10:00:31 UTC, Simen Kjærås wrote: > However, it's easy to implement in a library: It even is in phobos: https://dlang.org/phobos/std_array.html#.staticArray ``` import std.array: staticArray; auto a = [0, 1, 2].staticArray; ``` |
December 03, 2018 Re: Initialize static array without explicit length | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dennis | On Monday, 3 December 2018 at 12:19:26 UTC, Dennis wrote:
> On Monday, 3 December 2018 at 10:00:31 UTC, Simen Kjærås wrote:
>> However, it's easy to implement in a library:
>
> It even is in phobos:
> https://dlang.org/phobos/std_array.html#.staticArray
>
> ```
> import std.array: staticArray;
> auto a = [0, 1, 2].staticArray;
> ```
The more you know. Thankies! :)
--
Simen
|
Copyright © 1999-2021 by the D Language Foundation