【发布时间】:2010-09-06 09:33:02
【问题描述】:
我一直在尝试了解 Ruby 块的工作原理,为此我一直在尝试在 C 中实现它们。
实现闭包的一种简单方法是将void* 传递给闭包/函数的封闭堆栈,但Ruby 块似乎也处理使用该块的范围内的返回和中断语句。
loop do
break i if (i >= 4000)
i *= 2
end
我认为 Java 的闭包提案之一也是这样工作的。
那么,您将如何在 C 中实现 Ruby 块/Java 闭包?
【问题讨论】:
-
“那么,你将如何在 C 中实现 Ruby-blocks/Java-closures?”至少在 Java 7 发布之前,没有 Java 闭包之类的东西。
-
是的,这就是为什么我之前说过“Java 的闭包提案”。