On Mon, 17 Sep 2012 09:21:41 -0400, Andrej Mitrovic
<[email protected]> wrote:
This completely surprised me:
bool doMatch(int[] lhsArr, int[][] arrArr)
{
foreach (int[] rhsArr; arrArr)
{
writeln("if (!doMatch(lhsArr, arrArr))");
if (!.doMatch(lhsArr, arrArr))
Don't you mean:
if(!.doMatch(lhsArr, rhsArr))
??
return false;
}
return true;
}
bool doMatch(int[] lhsArr, int[] rhsArr)
{
return true;
}
void main()
{
int[] x = [1, 2];
int[][] y = [[1, 2], [1, 2]];
bool b = doMatch(x, y);
}
This will enter an infinite loop because the first doMatch overload
gets recursively called. I don't understand why the second overload
isn't picked up as a match in the call "doMatch(lhsArr, arrArr)".
Because arrArr is an int[][] :)
-Steve