Too complicated code for generating a random string?
Ali Çehreli
acehreli at yahoo.com
Fri Feb 22 18:20:26 PST 2013
On 02/22/2013 05:07 PM, bearophile wrote:
> 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
Agreed.
> Note that:
> range[uniform(0, range.length)];
>
> is written more compactly as:
> range[uniform(0, $)];
Good point. I would think that $ must be "out in the open" to work that way.
>> void main()
>> {
>> writeln(iota(10).map!((_) => pickOne(letters)));
>> }
>
> Instead of "(_)" I think it's better to use a simpler "_".
Mine evolved from the earlier buggy ()=> then I inserted an underscore
without realizing to remove the parentheses.
> 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
I did need such a function in the past. I have been thinking about the
name 'generate' but if 'table' is common already, why not. :)
> So it becomes something like:
>
> 10.table!({ return letters.choice; }).writeln;
>
> Bye,
> bearophile
Ali
More information about the Digitalmars-d
mailing list