Scala 3.0.0中使用println出现语法错误,求解决方案
问题原因与解决方法
你的代码报错是因为Scala 3.0.0中,顶层执行语句(比如val up = new Upper1()、println(uppers))不能和类定义直接共存于同一个文件。编译器期望顶层内容都是类、对象、特质或入口方法这类定义结构,而非直接执行的代码。
解决方式一:使用@main注解定义入口方法
修改代码,把执行逻辑放到带@main注解的方法中:
// saved as file Upper1.scala class Upper1: def convert(strings: Seq[String]): Seq[String] = strings.map((s: String) => s.toUpperCase) @main def run(): Unit = val up = new Upper1() val uppers = up.convert(List("Hello", "World!")) println(uppers)
执行命令不变:
% scala Upper1.scala
解决方式二:使用对象的main方法
也可以把执行逻辑放到单例对象的main方法中:
// saved as file Upper1.scala class Upper1: def convert(strings: Seq[String]): Seq[String] = strings.map((s: String) => s.toUpperCase) object Upper1App: def main(args: Array[String]): Unit = val up = new Upper1() val uppers = up.convert(List("Hello", "World!")) println(uppers)
运行时可以直接执行:
% scala Upper1.scala
或者先编译再运行:
% scalac Upper1.scala % scala Upper1App
内容的提问来源于stack exchange,提问作者Deb
相关产品推荐
相关产品推荐

