【发布时间】:2013-06-11 04:10:18
【问题描述】:
据我所知,Ruby 是唯一同时支持call/cc 和try/catch/finally(写成begin/rescue/ensure/end 块)的主流语言。
我不熟悉 Ruby,但我的直觉告诉我这两者可能存在冲突,因为call/cc 允许任意控制流,ensure 需要一些有保证的控制流(某些代码路径必须在预定义的情况,即离开包含块)。
那么,语言中是否存在任何冲突?如果是这样,在这种情况下,语言的定义行为是什么?特别是,如果在 begin/ensure 块或 ensure/end 块中使用 call/cc 会发生什么?如果在块包含ensure 子句之后调用捕获的call/cc 怎么办?
【问题讨论】:
标签: ruby language-design finally callcc