【问题标题】:Continuations in RubyRuby 中的延续
【发布时间】:2010-09-14 01:20:15
【问题描述】:

有没有人做过让 Ruby 做延续的工作(比如 Smalltalk 上的 Seaside)?

【问题讨论】:

    标签: ruby continuations


    【解决方案1】:

    顺便说一句,this 是使用延续实现的可重新启动异常(也称为条件)的示例。我用过几次,在 Ruby 工具箱中拥有它是一件很酷的事情。

    【讨论】:

      【解决方案2】:

      neverblock 使用 1.9 光纤作为单线程 ruby​​ 网络服务器

      【讨论】:

        【解决方案3】:

        是的,在大多数情况下。就我的记忆而言,MRI (1.8) 已经支持它们,Ruby 1.9 (YARV) does it, too,Rubinius 也是如此。 JRuby 和 IronRuby 没有延续,而且他们不太可能获得它们(JVM 和 CLR 使用堆栈自检来保证安全性)

        Ruby 作为一种语言支持通过callcc 关键字进行延续。例如,它们用于实现标准库中的Generator 类。

        continuations on ruby-doc

        基于Continuation 的Web 框架(如seaside,或Arc 的std. 库中的一个)似乎不太受欢迎。我发现 wee 声称可以让您执行可选的延续,但我从未使用过它。

        【讨论】:

          【解决方案4】:

          正如其他人已经说过的,Ruby 1.8 支持延续。

          然而,Ruby 1.9 已经有一段时间不支持它们了。它们在今年的某个时候被重新添加,但大多数其他 Ruby 解释器(JRuby、IronRuby 等)不支持它们。

          如果您希望您的代码在主线 Ruby 以外的其他平台上可用,我建议不要使用它们。

          阅读this InfoQ article 了解有关该主题的更全面讨论。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-09-23
            • 2015-02-25
            • 2010-11-30
            • 2015-02-11
            • 2010-10-20
            • 2011-08-22
            • 2011-11-19
            相关资源
            最近更新 更多