DIP80: phobos additions
Ilya Yaroshenko via Digitalmars-d
digitalmars-d at puremagic.com
Mon Jun 15 07:32:18 PDT 2015
On Monday, 15 June 2015 at 13:44:53 UTC, Dennis Ritchie wrote:
> On Monday, 15 June 2015 at 10:00:43 UTC, Ilya Yaroshenko wrote:
>> N-dimensional slices is ready for comments!
>
> It seems to me that the properties of the matrix require `row`
> and `col` like this:
>
> import std.stdio, std.experimental.range.ndslice, std.range :
> iota;
>
> void main() {
>
> auto matrix = 100.iota.sliced(3, 4, 5);
>
> writeln(matrix[0]);
> // [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14],
> [15, 16, 17, 18, 19]]
>
> // writeln(matrix[0].row); // 4
> // writeln(matrix[0].col); // 5
> }
>
> P.S. I'm not exactly sure that these properties should work
> exactly as in my code :)
This works:
unittest {
import std.stdio, std.experimental.range.ndslice;
import std.range : iota;
auto matrix = 100.iota.sliced(3, 4, 5);
writeln(matrix[0]);
writeln(matrix[0].length); // 4
writeln(matrix[0].length!0); // 4
writeln(matrix[0].length!1); // 5
writeln(matrix.length!2); // 5
}
Prints:
//[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15,
16, 17, 18, 19]]
//4
//4
//5
I am note sure that we need something like `height`/row and
`width`/col for nd-slices. This kind of names can be used after
casting to the future `std.container.matrix`.
More information about the Digitalmars-d
mailing list