我正在学习scala,我看到很多例子在课堂上使用print
和println
使用.我注意到Console println "Hello"
会打印,但println "Hello"
不会expected but string literal found.
,但是println("Hello")
会说,但是会起作用.
据我所知,一切都是Scala中对象/类的函数,在我的第一个例子中我调用println
了Console
对象,但在第二个场景中我需要括号,为什么?
println("Hello")
手段Predef.println("Hello")
.
Predef
默认情况下导入所有成员.
在scala中,您可以导入对象的成员.
你可以这样调用方法println
:Predef println "Hello"
.对于具有单个参数的方法,您可以删除点和括号.它被称为operator notation
.但在这种情况下,您必须指定目标对象(Predef
)和参数.
也可以看看:
Scala语言规范 9.1编译单元:
隐式导入每个编译单元的顺序是:包
java.lang
,包scala
和对象scala.Predef
Scala编程,第一版.4.4 Scala应用程序:
斯卡拉隐含进口包的成员
java.lang
和scala
,还有一个名为单对象的成员Predef
,到每个Scala的源文件.Predef
,它位于包中scala
,包含许多有用的方法.例如,当你说println
在Scala的源文件,你实际上调用println
上Predef
.(Predef.println
转身并调用Console.println
,这是真正的工作.)当你说assert
,你在调用Predef.assert
.
Scala编程,第一版.5.3运算符是方法:
任何方法都可以是运算符
在Scala中,运算符不是特殊语言语法:任何方法都可以是运算符.使方法成为操作符的方法就是如何使用它.当你写"
s.indexOf('o')
"时,indexOf
不是运营商.但是当你写"s indexOf 'o'
"时,indexOf
是一个运算符,因为你在运算符表示法中使用它.