On Fri, 15 Oct 2010 15:50:53 -0400, spir <[email protected]> wrote:

Hello,

A few questions raised by a single func.

===================
alias char[] Text ;

Text letters = ['a','b','c',...] ;

Text[] nameSet (uint count , uint size) {
        /* set of count random names of size size */
        Text[] names ; names.length = count ;
        Text name ; name.length = size ;
        for (int i=0 ; i<count ; i++) {
                for (int j=0 ; j<size ; j++)
                    name[j] = letters[uniform(0u,26u)] ;
                names[i].length = size ;
                names[i][] = name ;
        }
        return names ;
}
===================

1. In the inner loop generating name, I have found neither a way to feed directly ints into name, nore a way to cast ints to chars using to! (also found no chr()). So, I had to list letters. But this wouldn't work with a wide range of unicode chars... How to build name directly from random ints?

Can't you just use addition?

i.e. i = 0-25 mapped to letters a-z is cast(char)('a' + i)

If you are going for unicode, I'd suggest using wchar or dchar (which could be directly cast from integers) to build the string, and then use to!(char[])(widename);

Finally, I'd suggest accepting a dchar[] letters as a third optional parameter in case someone wants names in a specific language.

-Steve

Reply via email to