Printing an std.container.Array

H. S. Teoh via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Apr 16 13:05:48 PDT 2015


On Thu, Apr 16, 2015 at 07:55:52PM +0000, Bayan Rafeh via Digitalmars-d-learn wrote:
> Executing this code:
> 
> import std.container.array;
> import std.stdio;
> 
> 
> int main() {
> 	writeln(Array!int([1, 2]));
> 	return 0;
> }
> 
> outputs the following:
> 
> Array!int(RefCounted!(Payload,
> cast(RefCountedAutoInitialize)0)(RefCountedStore(B694B0)))
> 
> 
> The strange thing is that this works fine:
> 
> import std.container.array;
> import std.stdio;
> 
> int main() {
> 	writeln(Array!int([1, 2])[0..$]);
> 	return 0;
> }
> 
> [1, 2]
> 
> How am I supposed to interpret this?

Try slicing the Array before passing it to writeln?

	writeln(Array!int([1, 2])[]);

Basically, there is a distinction between a container and a range that
spans the items in a container. The conventional syntax for getting a
range over a container's contents is the slicing operator [].


T

-- 
It said to install Windows 2000 or better, so I installed Linux instead.


More information about the Digitalmars-d-learn mailing list