Mic*_*ael 13 syntax import scala
我在Scala代码中遇到以下内容:
class MyClass {
...
val a = new A; import a._
}
究竟是什么val a = new A; import a._意思?
这意味着类型a对象的所有方法和变量A现在都可以在此块(范围)中使用,而无需明确提及a.所以如果A有bar()方法你现在可以说:
bar()
Run Code Online (Sandbox Code Playgroud)
代替
a.bar()
Run Code Online (Sandbox Code Playgroud)
但仅限于import定义的范围内.
让我们用你应该熟悉的东西解释一下:
println("Hello world")
Run Code Online (Sandbox Code Playgroud)
问题是:为什么这样做?没有println使用apply方法调用的对象,这是代码的通常解释.好吧,碰巧,上面的代码实际上是这样做的:
Predef.println("Hello world")
Run Code Online (Sandbox Code Playgroud)
换句话说,println是对象的方法scala.Predef.那么,你怎么能像上面一样使用它呢?好吧,像这样:
import scala.Predef._
println("Hello world")
Run Code Online (Sandbox Code Playgroud)
导入稳定引用的内容 (即,不是a var或a def)将使其方法可用,而不必使用它们作为前缀reference..
这也使得它里面定义的任何可用的implicits,这是怎么里面定义的隐式转换scala.Predef是可用,以及-斯卡拉进口的内容java.lang,scala以及scala.Predef(按照这个顺序,所以后面的一些覆盖早期的).