scala学习:apply方法

时间:2023-03-09 09:16:20
scala学习:apply方法

摘抄两段话:

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

greetStrings.update(0, "Hello")