19.4 apply
和 update
方法
函数调用语法: f(参数1, 参数2, ...)
Scala 允许我们将这种函数调用语法扩展到非函数的地方使用.
当用于非函数的时候:
uf(arg1)
// 等价于
uf.apply(arg1)
uf(arg1) = 100
// 等价于
uf.update(arg1, 100)
这种机制被用在数组和映射:
val nums: ArrayBuffer[Int] = new mutable.ArrayBuffer[Int](3)
nums.append(10)
nums.append(20)
nums.append(30)
println(nums)
println(nums(0))
println(nums.apply(0))
nums(0) = 100
nums.update(1, 200)
println(nums)
apply
方法同样用在伴生对象中, 用来构造对象, 而不用显示的使用new
apply
用法总结:
定义在伴生对象中.
当直接:A(x)
相当于在调用A.apply(x)
方法. 一般用在不使用new
的情况下得到一个伴生类的对象.定义在类中. 现在有一个对象
a
, 则a(x)
相当于a.apply(x)
调用函数值
val f = foo _ f.apply() // 等价于 f()