confused with data types

thorstein torsten.lange at mail.de
Sun Feb 18 12:51:04 UTC 2018


Thank you for the very informative answers showing different 
gears in D!

However, there are still some details I'm struggling with:

Assume some calculations on a very big numeric array 
'double[][][] arr'.
Now we could choose 1 out of 3 different implementations:
// Solution 1
foreach(row; arr)
{ foreach(col; row)
   { col[] *= skalar;
   }
}
return arr;

// Solution 2
import std.array;
return array(arr.map!(b => array(b[].map!(c => array(c[].map!(d 
=> d * skalar))))));

// Solution 3
import std.algorithm;
arr.each!(a => a[].each!(b => b[] *= skalar));
return arr;

Q#1:
Does the compiler optimizes all solutions equally strong or does 
it prefer implementations like solution 1?

Q#2:
Solution 2 is a 1-liner but a bit harder to read. Why reducing 
solution 3 to:
return arr.each!(a => a[].each!(b => b[] *= skalar));
gives a compile error? I do writeln() the function result.

Q#3:
If I can:
static import std.array;
return std.array.array(arr.map!(b => std.array.array(b[].map!(c 
=>...

How would I apply a similar version with 'static import 
std.algorithm' to solution 3?
static import std.algorithm;
std.algorithm.arr.each!(a => a[]... //does obviously not work

Thanks, thorstein


More information about the Digitalmars-d-learn mailing list