Error: no property 'sort' for type 'ulong[string]', or sometimes not ...

Jakob Ovrum jakobovrum at gmail.com
Sun Oct 20 08:15:30 PDT 2013


On Sunday, 20 October 2013 at 14:50:52 UTC, Derix wrote:
> Hi there,
>
> So I've just stated learning D. Playing with associative 
> arrays, I wrote this simple function. No big deal.
>
> void associativeArrayFu(){
> 	ulong[string] arr;
> 	arr["foo"]=1;
> 	arr["bar"]=2;
> 	arr["foo"]=45;
> 	
> 	foreach( thing;arr.sort){
> 		writeln( thing );
> 		}
> 	}
>
> Compiles and runs just fine.
> Stating to have a bunch of funtions in one file, I reorganised 
> my sources among several files (in the same project in Eclipse).
>
> Now the same function yelds this error when compiling:
>
> Error: no property 'sort' for type 'ulong[string]'
>
> wether it is in a source file alongside other functions, alone 
> in its own file, or even all alone in its own project.
>
> Not that I care that much about this poor function, but I am 
> puzzled. What did I miss ?

Associative arrays are not sortable and have no defined order of 
element pairs. You can get an array of its values and sort that, 
by using the `values` property:

---
import std.algorithm : sort;
import std.stdio : writeln;

foreach(value; aa.values.sort())
{
     writeln(value);
}
---

> And oh, maybe this is not the right place for a beginner ? Is 
> there any better place ?

The D.learn group is the most appropriate for these kinds of 
questions :)


More information about the Digitalmars-d mailing list