Thank you for reply.

Here is what i trying to achieve, i have module-wise data structure, which should exist in form of array and associative array, but i can't calculate second form on compile time:

const a = [["a","1"],["b", "2"], ... ];
const string[string] b = a.map!(...).assocArray;

This is not allowed, so i trying this approach:

const a = [["a","1"],["b", "2"], ... ];
const string[string] b;

int some_func() {
  b = a.map!(...).assocArray;
  ....
}

It is ok, but i don't want calculate 'b' every time 'come_func' is called,
so i'd like to do something like this:

int some_func() {
  if(b is null) {
     b = a.map!(...).assocArray;
  }
  ....
}




On Thursday, 26 December 2013 at 10:13:36 UTC, John Colvin wrote:
On Thursday, 26 December 2013 at 09:21:39 UTC, Dfr wrote:
In Javascript there is 'undefined', i can do something like:

var a;
if(a === undefined) {  a = [1,2,3] }

How such check can be done in D ?

In D, all variables are initialised to the .init value for their
type when declared. If a is a nullable type that's init value is
null (e.g. a class) then use

if(a is null)

In general it's not good to check for equality with the init
value as, for example, the init value for integers is 0, which
can of course be a valid value itself.

However, there's probably a neater way of approaching the
problem. Can you provide a little more context as to what you're
trying to achieve?

Reply via email to