On Thursday, 19 January 2017 at 07:48:03 UTC, Jot wrote:
alias a = myarray[k];

fails

myarray is a multidimensial array that I want to reduce writing it every time but D complains that it can't alias it.

I simply want it to do a direct substitution, nothing fancy, just to reducing typing.

alias is not a macro, it is alias to *symbol*. only symbol, not any arbitrary expression.

if you want to reduce typing, consider, for example, moving your code to nested function and pass `myarray[k]` as ref arg to it. like:

void processArray (int[] myarray) {
  void doSomething (ref int a) {
     if (a == 0) a = 42; else a += 69;
  }
  foreach (immutable k; 0..myarray.length) {
    if (k%3 == 0 || k%5 == 0) doSomething(myarray[k]);
  }
}

Reply via email to