SCALA 的函数为什么必须要包在object 或者class里面

分享 未结
0 0 1 11
马車 2019-03-07发布
收藏 点赞

如下a.scala

def greet(name:String){
  println("hello %s".format(name))
}
greet("scala")

在命令行 scala a.scala, 会打印“hello scala”

为什么scalac a.scala 编译会报错



回帖
  • 2019-03-07

    JVM规范要求:

    • 变量要么是局部变量,要么是类变量,不存在全局变量
    • 方法必须是类方法,不存在全局方法

    Scala程序运行在JVM之上,自然也要遵循上述规则。之所以可以成功执行scala a.scala,是因为Scala在执行脚本时,会自动生成一个"main class"用来包裹待执行的脚本。换句话说,脚本文件本身是无法通过编译的。

    1 回复