On Thu, 16 Apr 2015 13:05:48 -0700 "H. S. Teoh via Digitalmars-d-learn" <digitalmars-d-learn@puremagic.com> wrote:
> 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 > Yep, but problem is almost no one expect this, or know this. We definitely should do better.