【发布时间】:2008-11-06 21:26:48
【问题描述】:
我一直在 Oxygene 中试验 Lambda 表达式。计算斐波那契数的非常简单的递归 lambda 表达式:
var fib : Func<int32, int32>;
fib := n -> iif(n > 1, fib(n - 1) + fib(n - 2), n);
fib(3);
当我运行这段代码时,我得到一个空引用异常。关于我做错了什么有什么想法吗?
【问题讨论】:
-
当心,罗伯特的回答是错误的,而且是完全错误的。
-
所以基本上我们说这是一个错误,在修复之前我们应该避免在 lambda 表达式和匿名方法中递归。这会在其他地方引起问题吗?
-
这是一个错误。还不知道它是否会在发布前修复,因为显然这是很多工作。
-
它在 Delphi Prism 2010 中工作。我插入了一个工作代码示例作为答案。
-
史蒂夫或巴里:确认这是特定版本的 Delphi 中的错误的人应该编辑问题以指定。 Cary 的更新使这是一个特定于版本的问题。
标签: delphi lambda fibonacci oxygene