当系统同时安装了Scala2和Scala3时,如何执行Scala3脚本?
我想使用Scala3执行以下脚本:当系统同时安装了Scala2和Scala3时,如何执行Scala3脚本?,scala,scala-2.10,scala-3,Scala,Scala 2.10,Scala 3,我想使用Scala3执行以下脚本: @main def m() = println("Hello, world! I'm a script") 键入命令时,scala hello.scala,出现以下错误: /Users/avirals/dev/learning-scala/hello-world/hello.scala:1: error: not found: type main @main def m() = ^ one error found 我想这是因为我安
@main def m() =
println("Hello, world! I'm a script")
键入命令时,scala hello.scala
,出现以下错误:
/Users/avirals/dev/learning-scala/hello-world/hello.scala:1: error: not found: type main
@main def m() =
^
one error found
我想这是因为我安装了Scala的两个版本(2和3)。我知道如何为两者启动REPL(如上所述),但我无法从命令行执行Scala3脚本
[更新]
我尝试了scala3 repl hello.scala
,它只是打开了repl:
➜ learning-scala git:(main) scala3-repl hello.scala
scala> m()
1 |m()
|^
|Not found: m
如果安装了两个不同版本(2和3)的Scala,如何从命令行执行Scala 3脚本
我的操作系统:MacOS
更新2
正如在回答中所建议的,我尝试使用amm
运行,它对一些脚本有效。但是,以下脚本失败:
脚本:
在Scala3 REPL中运行上述脚本可以工作:
➜ learning-scala git:(main) scala3-repl
scala> @main def m(args: String*) =
| var i = 0
| while i < args.length do
| println(args(i))
| i += 1
|
def m(args: String*): Unit
scala> m("aviral", "srivastava")
aviral
srivastava
➜ 学习scala git:(主)scala3 repl
scala>@main def m(args:String*)=
|变量i=0
|而我呢
|println(args(i))
|i+=1
|
def m(参数:字符串*):单位
scala>m(“航空”、“斯利瓦斯塔瓦”)
航空的
斯利瓦斯塔瓦
在只安装了Scala3的系统(MacOS)中运行相同的脚本也可以正常工作。目前存在。我可以通过手动从下载一个版本、解压并向启动器授予可执行权限来让它工作
./scala3-3.0.0-RC3/bin/scala hello.scala
Hello, world! I'm a script
使用scala3 repl
launcher,您至少可以
$ scala3-repl
scala> :load hello.scala
def m(): Unit
scala> m()
Hello, world! I'm a script
什么是“制度”?如果您试图了解如何在您的系统上执行特定的程序,您应该查阅该系统的文档。它是什么,windows,macos,一些linux发行版?这甚至是一个scala问题吗?@AndreyTyukin我更新了操作系统,它是MacOS@jwvh我更新了答案,它不起作用。为什么起作用?
amm
是如何发现这里需要Scala 3的?我没有在任何地方指定任何与Scala版本相关的内容。谢谢@AviralSrivastava抱歉,ammonite当前不起作用,但您可以订阅打开拉取请求并查看进度。不,它确实起了一点作用,但对于复杂脚本(涉及函数和循环等的脚本)失败。
./scala3-3.0.0-RC3/bin/scala hello.scala
Hello, world! I'm a script
$ scala3-repl
scala> :load hello.scala
def m(): Unit
scala> m()
Hello, world! I'm a script