Too complicated code for generating a random string?

bearophile bearophileHUGS at lycos.com
Fri Feb 22 17:07:21 PST 2013


Ali Çehreli:

> auto pickOne(R)(R range)
>     // insert template constraints here ... :)
> {
>     return range[uniform(0, range.length)];
> }

That's the function choice() I'd like in Phobos:
http://d.puremagic.com/issues/show_bug.cgi?id=4851

Note that:
range[uniform(0, range.length)];

is written more compactly as:
range[uniform(0, $)];



> void main()
> {
>     writeln(iota(10).map!((_) => pickOne(letters)));
> }

Instead of "(_)" I think it's better to use a simpler "_".

That's another commonly useful function, often named table(), 
similar to map() but doesn't pass an index to the callable:

http://reference.wolfram.com/mathematica/ref/Table.html

So it becomes something like:

10.table!({ return letters.choice; }).writeln;

Bye,
bearophile


More information about the Digitalmars-d mailing list