鱼儿慢慢游~~

导航

 

摘抄两段话:

在明确了方法调用的接收者的情况下,若方法只有一个参数时,调用的时候就可以省略点及括号。
如 “0 to 2”,实际完整调用是 “0.to(2)”。但 “println(2)” 不能写成 “println 10“”,因为未写出方法调用的接收者 Console,所以可以写成 “Console println 10
用括号传递给变量(对象)一个或多个参数时,Scala 会把它转换成对 apply 方法的调用;
与此相似的,当对带有括号并包括一到若干参数的进行赋值时,
编译器将使用对象的 update 方法对括号里的参数和等号右边的对象执行调用。
val a  = new Array(1, 2 ,3)
a(0) 
实际上调用的是a.apply(0) 这也能解释为什么 Scala 数组取值不用中括号括下标的方式,因为它也是一次方法调用

举个例子:

class SomeClass {
    def apply(key: String): String = {
        println("apply method called, key is: " + key)
        "Hello World!"
    }
}
 
val anyObject = new SomeClass
println(anyObject("key1"))

输出为:

apply method called, key is: key1
Hello World!

 

update方法:

greetStrings(0) = "Hello"  实际为:

greetStrings.update(0, "Hello")

 

posted on 2016-10-11 11:48  miss_UU  阅读(454)  评论(0编辑  收藏  举报