On 12/24/22 08:18, jwatson-CO-edu wrote:
> On Friday, 23 December 2022 at 07:25:23 UTC, Salih Dincer wrote:
>> You can try using static this.
>>
>> ```d
>> import std.random;
>>
>> static this() { } // can try using

static this() blocks: executed when a thread a starts (the program has at least one thread: the main thread); so you can put initializations here

~static this() blocks: counterparts of 'static this', executed once for each thread that is terminating

shared static this() blocks: executed once per program (executed by the main thread)

~shared static this() blocks executed once per program when the program is terminating

>>     "rand" : () => new Atom(rand01)

That's the lambda (ananymous function) syntax.

The "rand" key of an associative array is being associated with the function after the ':' character. In the code above, the function creates a new Atom object. So, when the following code is executed:

  primitiveSymbols["rand"]

the same lambda would be returned but the execution of that lambda as the following

  primitiveSymbols["rand"]()

would return a new Atom which would make a call to the rand01() function and get a new random number from the same 'rnd' object.

Ali

Reply via email to