passing a variadic parameter to randomSample
Ali Çehreli
acehreli at yahoo.com
Tue Jan 25 22:07:43 UTC 2022
On 1/25/22 13:55, forkit wrote:
> auto RandomChoice(R...)(R r)
Watch out though: The compiler will compile a different function per set
of values. For example, there will be separate RandomChoice instances
for ("hello") vs. ("world").
D has a simple variadic parameter syntax as well:
auto RandomChoice(R)(R[] r...)
> {
> auto rnd = MinstdRand0(unpredictableSeed);
> return only(r).randomSample(1, rnd).front;
Which makes that simpler as well because being a slice, r is already a
range. And there is choice():
return r.choice(rnd);
Something is very important though: The 'r' slice is short-lived; it
does not live in dynamic memory. RandomChoice() should not save it for
later use nor return it. (The compiler may have protection against that;
I am not sure.)
Ali
More information about the Digitalmars-d-learn
mailing list