gpt4 book ai didi

scala - 如何在 REPL 中检索 Scala 的版本?

转载 作者:行者123 更新时间:2023-12-03 11:49:08 25 4
gpt4 key购买 nike

当尝试在在线解释器或 IRC 机器人中运行一些代码时,我总是想知道它们支持哪个版本的 Scala。

有没有办法从解释器中检索 Scala 的版本?

最佳答案

对于 Scala 2,使用 scala.util.Properties.versionNumberString (或 versionString):

scala> scala.util.Properties.versionString
val res0: String = version 2.13.6

scala> scala.util.Properties.versionNumberString
val res1: String = 2.13.6
对于 Scala 3,如果你做同样的事情,你可能会对答案感到惊讶:
% scala3 -version
Scala code runner version 3.0.1 -- Copyright 2002-2021, LAMP/EPFL
% scala3
scala> scala.util.Properties.versionNumberString
val res0: String = 2.13.6
那是因为 Scala 3.0.x 原样使用 Scala 2 标准库来帮助迁移,并且只进行了少量添加。 (最终标准库将不再像这样保持同步。)
以下是获取 Scala 3 编译器版本的方法:
scala> dotty.tools.dotc.config.Properties.simpleVersionString
val res0: String = 3.0.1
这仅在 scala3-compiler JAR 位于您的类路径上时才有效。 (在标准的 Scala 3 REPL 中,它是;在其他一些环境中,它可能不是。)
如果编译器不在您的类路径中,而您想要完整的 Scala 3 版本字符串,请参阅 Dmitrii's answer .
如果编译器不在你的类路径上,但你只想在运行时找出你是在 Scala 2 还是 3 上,那么......也许有一种更干净/更好的方法,你告诉我,但一种有效的方法是:
util.Try(Class.forName("scala.CanEqual")).isSuccess
在这里,选择 scala.CanEqual是任意的,它可以是 scala3-library 但不是 scala-library 中的少数类中的任何一个。
但是如果你想走这条路,你可以考虑在你的项目中包含特定版本的源代码,或者通过 sbt-buildinfo 传递 Scala 版本。 .

关于scala - 如何在 REPL 中检索 Scala 的版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6967788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com