使用对象外部的语句运行Scala脚本
使用对象外部的语句运行Scala脚本,scala,Scala,myfile.scala的内容如下: // println("print this line") object myObj { def main(args: Array[String]): Unit = { println("Hello, world!") } } 如果我运行:scala myfile.scala,它将打印:Hello,world 如果我取消对第一个println stmt的注释,并运行:scala myfi
myfile.scala
的内容如下:
// println("print this line")
object myObj {
def main(args: Array[String]): Unit = {
println("Hello, world!")
}
}
如果我运行:scala myfile.scala
,它将打印:Hello,world
如果我取消对第一个println stmt的注释,并运行:scala myfile.scala
,
它只打印:打印此行
,
并且不打印hello world stmt
为什么会这样?我觉得很困惑。我试图搜索归档文件,但找不到任何答案。当scala命令在文件中看到顶级语句(不在类或对象中)时,它会将文件作为脚本运行,从第一行开始向下移动。您永远不会调用main方法,因为您永远不会调用它,只需定义它即可。当您的文件不包含任何顶级语句但包含主对象时,它将运行main方法作为程序的入口点。当scala命令在文件中看到顶级语句(不在类或对象中)时,它将作为脚本运行文件,从第一行开始向下移动。您永远不会调用main方法,因为您永远不会调用它,只需定义它即可。当您的文件不包含任何顶级语句,但确实包含一个主对象时,它将运行main方法作为程序的入口点。这个问题与oo或函数式编程无关。这是一个公平的问题,但标题完全无关。实现这一点的简单方法是使用myObj extend App。这基本上将对象的全部内容视为
main
。您可以参考以下问题来启动应用程序。这是一个公平的问题,但标题完全不相关。实现这一点的一个简单方法是使用myObj extend应用程序。这基本上将对象的全部内容视为main
。您可以参考以下问题来启动应用程序。公平的问题是,没有什么值得邀请的-1