19.4 applyupdate 方法

函数调用语法: 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用法总结:

  1. 定义在伴生对象中.
    当直接: A(x) 相当于在调用A.apply(x)方法. 一般用在不使用 new的情况下得到一个伴生类的对象.

  2. 定义在类中. 现在有一个对象a, 则a(x)相当于a.apply(x)

  3. 调用函数值

     val f = foo _
     f.apply() // 等价于 f()
    
Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2019-05-18 15:03:20

results matching ""

    No results matching ""