Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
January 26, 2021 How can I use UFCS for a loop | ||||
---|---|---|---|---|
| ||||
Hi all, How can I change the following to a more D-like approach by using UFCS? >double[3] result; >Json json = res.readJson; >for(int i = 0; i < json.length; i++){ > result[i] = json[i].to!double; >} I'd prefer to do something like: >result = res.readJson[].map!(to!double); |
January 26, 2021 Re: How can I use UFCS for a loop | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tim | On Tuesday, 26 January 2021 at 00:47:09 UTC, Tim wrote: > Hi all, > > How can I change the following to a more D-like approach by using UFCS? > >>double[3] result; >>Json json = res.readJson; >>for(int i = 0; i < json.length; i++){ >> result[i] = json[i].to!double; >>} > > I'd prefer to do something like: > >>result = res.readJson[].map!(to!double); Use std.array.array (alias: std.range.array) to make the range returned my map!(to!double) into an array. Note that the result of map isn't actually evaluated until it is iterated. std.array.array will iterate and collect. https://dlang.org/phobos/std_array.html#array result = res.readJson[].map!(to!double).array; should work perfectly. |
January 26, 2021 Re: How can I use UFCS for a loop | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tim | On Tuesday, 26 January 2021 at 00:47:09 UTC, Tim wrote:
> Hi all,
>
> How can I change the following to a more D-like approach by using UFCS?
>
>>double[3] result;
Unless you have a good reason, use a slice and not a static array:
double[] result;
The result of std.array.array will be a slice anyway.
|
January 26, 2021 Re: How can I use UFCS for a loop | ||||
---|---|---|---|---|
| ||||
Posted in reply to Q. Schroll | On Tuesday, 26 January 2021 at 01:38:45 UTC, Q. Schroll wrote:
> On Tuesday, 26 January 2021 at 00:47:09 UTC, Tim wrote:
>> Hi all,
>>
>> How can I change the following to a more D-like approach by using UFCS?
>>
>>>double[3] result;
>
> Unless you have a good reason, use a slice and not a static array:
>
> double[] result;
>
> The result of std.array.array will be a slice anyway.
Why would I need to use a slice instead of a static array? I'm using a static array in this instance because I have and underlying 3d vector with double[3] as its base type
|
January 26, 2021 Re: How can I use UFCS for a loop | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tim | On Tuesday, 26 January 2021 at 02:19:10 UTC, Tim wrote: > On Tuesday, 26 January 2021 at 01:38:45 UTC, Q. Schroll wrote: >> On Tuesday, 26 January 2021 at 00:47:09 UTC, Tim wrote: >>> Hi all, >>> >>> How can I change the following to a more D-like approach by using UFCS? >>> >>>>double[3] result; >> >> Unless you have a good reason, use a slice and not a static array: >> >> double[] result; >> >> The result of std.array.array will be a slice anyway. > > Why would I need to use a slice instead of a static array? I'm using a static array in this instance because I have and underlying 3d vector with double[3] as its base type In that case, maybe this untested code double[3] result; res.readJson[].map!(to!double).copy(result[]); |
Copyright © 1999-2021 by the D Language Foundation