如何在 Scala 中启用延续?

发布于 2024-08-30 09:16:14 字数 301 浏览 7 评论 0原文

问题说明了一切。

(然而,如何访问 shiftreset 操作的细节多年来已经发生了变化。旧的博客条目和 Stack Overflow 答案可能包含过时的信息。 )

另请参阅 什么是 Scala 延续以及为什么使用它们?,其中讨论了您可能希望使用 shift 执行的操作 和 reset 一旦你有了它们。

Question says it all.

(Yet, the details of how to get access to the shift and reset operations has changed over the years. Old blog entries and Stack Overflow answers may have out of date information.)

See also What are Scala continuations and why use them? which talks about what you might want to do with shift and reset once you have them.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

丘比特射中我 2024-09-06 09:16:14

Scala 2.12 或 2.11

最简单的方法是使用 sbt。以下是要放入 build.sbt 中的内容:

scalaVersion := "2.12.2"    
addCompilerPlugin(
  "org.scala-lang.plugins" % "scala-continuations-plugin" % "1.0.3"
    cross CrossVersion.patch)
libraryDependencies +=
  "org.scala-lang.plugins" %% "scala-continuations-library" % "1.0.3"
scalacOptions += "-P:continuations:enable"

在代码(或 REPL)中,执行 import scala.util.continuations._

您现在可以使用 shift重置到您想要的内容。

请注意,我使用了 Scala 版本 2.12.2,因为这是该插件发布的最后一个版本。如果您想使用较新的 2.12.x 版本,您需要从源代码自行构建插件。如果您使用 2.12.2,您可能需要使用 Java 8,因为根据 https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html Java 11 支持直到 2.12.4 才落地。

Scala 2.8、2.9、2.10 的历史信息

您必须使用 -P:continuations:enable 标志启动 scala(或 scalac)。

在您的代码中,执行 import scala.util.continuations._

您现在可以随心所欲地使用 shiftreset

如果您使用的是 sbt 0.7,请参阅 https:/ /groups.google.com/forum/#!topic/simple-build-tool/Uj-7zl9n3f4

如果您使用的是 sbt 0.11+,请参阅https://gist.github.com/1302944

如果您使用的是 Maven,请参阅 http://scala-programming-language .1934581.n4.nabble.com/scala-using-continuations-plugin-with-2-8-0-RC1-and-maven-td2065949.html#a2065949

Scala 2.12 or 2.11

The easiest way is to use sbt. Here's what to put in your build.sbt:

scalaVersion := "2.12.2"    
addCompilerPlugin(
  "org.scala-lang.plugins" % "scala-continuations-plugin" % "1.0.3"
    cross CrossVersion.patch)
libraryDependencies +=
  "org.scala-lang.plugins" %% "scala-continuations-library" % "1.0.3"
scalacOptions += "-P:continuations:enable"

In your code (or the REPL), do import scala.util.continuations._

You can now use shift and reset to your heart's content.

Note that I used a Scala version of 2.12.2 because that's the last version the plugin was published for. If you want to use a newer 2.12.x version, you'd need to build the plugin yourself from source. If you use 2.12.2, you'll probably need to be on Java 8, since according to https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html Java 11 support didn't land until 2.12.4.

historical information for Scala 2.8, 2.9, 2.10

You have to start scala (or scalac) with the -P:continuations:enable flag.

In your code, do import scala.util.continuations._

You can now use shift and reset to your heart's content.

If you're using sbt 0.7, see https://groups.google.com/forum/#!topic/simple-build-tool/Uj-7zl9n3f4

If you're using sbt 0.11+, see https://gist.github.com/1302944

If you're using maven, see http://scala-programming-language.1934581.n4.nabble.com/scala-using-continuations-plugin-with-2-8-0-RC1-and-maven-td2065949.html#a2065949

烟雨凡馨 2024-09-06 09:16:14

非 SBT 解决方案:

scala -Xpluginsdir /.../scala/lib/ -P:continuations:enable

适用于 scala 2.11.6,但插件/库表示它将不再包含在 Scala 中2.12

Non SBT solution:

scala -Xpluginsdir /.../scala/lib/ -P:continuations:enable

Works on scala 2.11.6, but the plugin/library said that it will no longer be included with Scala 2.12

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文