当系统同时安装了Scala2和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 我想这是因为我安

我想使用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
我想这是因为我安装了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