www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Empty Associative Aarray Literal

reply Jack Stouffer <jack jackstouffer.com> writes:
I want to have one of the parameters on a function be optional. 
The problem is, is that it's a AA and D does not seem to support 
empty AA literals. Observe:

string func(int a, int[int] b = []) {
     return "mem1";
}

void main() {
     func(1);
}

$ dmd test
test.d(8): Error: cannot implicitly convert expression ([]) of 
type void[] to int[int]

This doesn't work either

string func(int a, int[int] b = int[int].init) {
     return "mem1";
}

void main() {
     func(1);
}
Mar 03 2016
next sibling parent cym13 <cpicard openmailbox.org> writes:
On Thursday, 3 March 2016 at 22:06:54 UTC, Jack Stouffer wrote:
 I want to have one of the parameters on a function be optional. 
 The problem is, is that it's a AA and D does not seem to 
 support empty AA literals. Observe:

 string func(int a, int[int] b = []) {
     return "mem1";
 }

 void main() {
     func(1);
 }

 $ dmd test
 test.d(8): Error: cannot implicitly convert expression ([]) of 
 type void[] to int[int]

 This doesn't work either

 string func(int a, int[int] b = int[int].init) {
     return "mem1";
 }

 void main() {
     func(1);
 }
Use null: string func(int a, int[int] b = null) { return "mem1"; } void main() { func(1); }
Mar 03 2016
prev sibling parent =?UTF-8?Q?Ali_=c3=87ehreli?= <acehreli yahoo.com> writes:
On 03/03/2016 02:06 PM, Jack Stouffer wrote:

 This doesn't work either

 string func(int a, int[int] b = int[int].init) {
Parentheses around int[int] works though. I don't know whether it's a bug. string func(int a, int[int] b = (int[int]).init) { Ali
Mar 03 2016