www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - dlang.org/Learn "hello_world".sort.chain ...

reply Tony <tonytdominguez aol.com> writes:
I just typed in the program that is on the first page of Learn. 
It has this line:

sort(chain(arr1, arr2, arr3));

I assigned that to a variable:

arr4 = sort(chain(arr1, arr2, arr3));

then printed it out

writefln("%s",arr4);   // works

and then tried to print out the type of arr4:

writefln("%s",typeof(arr4));

and got this error:

// HelloWorld.d:25:19: error: cannot pass type 
SortedRange!(Result, "a < b") as a function argument

What exactly is that type? Or maybe, what would it take to 
understand what that type is?
Dec 26 2023
parent reply Sergey <kornburn yandex.ru> writes:
On Tuesday, 26 December 2023 at 10:53:10 UTC, Tony wrote:
 I just typed in the program that is on the first page of Learn. 
 It has this line:

 sort(chain(arr1, arr2, arr3));

 I assigned that to a variable:

 arr4 = sort(chain(arr1, arr2, arr3));

 then printed it out

 writefln("%s",arr4);   // works

 and then tried to print out the type of arr4:

 writefln("%s",typeof(arr4));

 and got this error:

 // HelloWorld.d:25:19: error: cannot pass type 
 SortedRange!(Result, "a < b") as a function argument

 What exactly is that type? Or maybe, what would it take to 
 understand what that type is?
Use typeid, instead of typeof
Dec 26 2023
parent reply tony <tonytdominguez aol.com> writes:
On Tuesday, 26 December 2023 at 11:19:29 UTC, Sergey wrote:

 Use typeid, instead of typeof
Thanks! Got quite a type but I will worry about that later: std.range.SortedRange!(Result, "a < b").SortedRange
Dec 26 2023
parent Sergey <kornburn yandex.ru> writes:
On Tuesday, 26 December 2023 at 13:58:54 UTC, tony wrote:
 On Tuesday, 26 December 2023 at 11:19:29 UTC, Sergey wrote:

 Use typeid, instead of typeof
Thanks! Got quite a type but I will worry about that later: std.range.SortedRange!(Result, "a < b").SortedRange
Yes, because sort is returning special type, compatible with Ranges interface. You can add 'sort(...).array' and the type will become 'int[]' (or which types arrays were before). Ranges are specific things for D (one of the core feature of the lang and std), which can evaluated lazily. You can check some description how they are working in the documentation https://dlang.org/phobos/std_range.html
Dec 26 2023