Kotlin 委托

好吧,这个委托概念里有的地方很绕,估计我说的对你有用

网上的很多解释不是跳过,就是照搬翻译一下,当然是隔靴搔痒了,估计也是搞不明白

两点核心:

1. 委托:就是A的活交给B来做

2. 函数在kotlin中就是普通类型,它的声明形式:(x:type, ...) -> type

这里给出demo,局部委托属性

局部委托属性:就是可以将局部变量当作属性来对待,于是就可以对这个局部属性委托处理

  1 class Foo {

  2     fun isAvaliable():Boolean {

  3         return true

  4     }

  5 }

  6 

  7 fun example(cf:() -> Foo) {

  8     val p:Int by lazy {

  9         println("first in")

 10         13

 11     }

 12     println(p)

 13     println(p)

 14     println(cf().isAvaliable())

 15     val h by lazy(cf)

 16     if (true) {

 17         println("type h is $h")

 18         println(h.isAvaliable())  

 19     }

 20  

 21 }

 22 fun example1(cf:(x:Int, y:Int)-> Int) {

 23     println(cf(1,2))

 24 }

 25 

 26 fun addf(x:Int, y:Int): Int {

 27     return x+y

 28 }

 29 

 30 fun main(args:Array<String>)  {

 31  example({Foo()})

 32     example1(::addf)

 33     example1(fun(x:Int, y:Int):Int{return x+y})

 34}

//结果

first in

13

13

true

type h is Foo@63961c42

true

3

3

 Finally:

1. 无参参数函数类型,我们可以传人一个函数实现体,也就{}扩起来的函数实现

2.有参参数函数类型,我们可以传入::函数名,也就是函数实现的声明

3.有参参数函数类型,我们还可以传入匿名函数

总之,当你做这部分学习时,如果你迷惑了,就看看我写的例子,你会越看越明白的

Kotlin的官网说明都很飞天,也难为这些天才们了,要把高速飞转的idea说清楚,确实不易。

但写不明白,那就真是他们的问题了。哈哈哈

原文地址:https://www.cnblogs.com/woodzcl/p/7719858.html