Re: How can I use UFCS for a loop

2021-01-25 Thread Jesse Phillips via Digitalmars-d-learn

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[]);


Re: How can I use UFCS for a loop

2021-01-25 Thread Tim via Digitalmars-d-learn

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


Re: How can I use UFCS for a loop

2021-01-25 Thread Q. Schroll via Digitalmars-d-learn

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.


Re: How can I use UFCS for a loop

2021-01-25 Thread Q. Schroll via Digitalmars-d-learn

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.