【发布时间】:2014-08-12 07:50:44
【问题描述】:
我正在尝试在 Haxe 3 中编写一个简单的相互递归函数,但无法编译代码,因为首先出现的任何一个相互函数都会报告该组中的其他函数未定义。下面是一个最小示例,其中使用相互定义的函数odd 和even 来确定奇偶校验。
static public function test(n:Int):Bool {
var a:Int;
if (n >= 0) a = n; else a = -n;
function even(x:Int):Bool {
if (x == 0)
return true;
else
return odd(x - 1);
}
function odd(x:Int):Bool {
if (x == 0)
return false;
else
return even(x - 1);
}
return even(a);
}
尝试将其编译为 neko 给出:
../test.hx:715: characters 11-14 : Unknown identifier : odd
Uncaught exception - load.c(181) : Module not found : main.n
我试图在even 之前给出odd 的前向声明,就像在c/c++ 中所做的那样,但它在haxe3 中似乎是非法的。如何定义像上面这样的相互递归函数?有可能吗?
注意:我想让 odd 和 even 都成为包装在全局可见函数 test 中的本地函数。
谢谢,
【问题讨论】:
标签: recursion haxe mutual-recursion