Kotlin 委托

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 [email protected]

true

3

3

 Finally:

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

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

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

 

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

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

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

以上是关于Kotlin 委托的主要内容,如果未能解决你的问题,请参考以下文章

kotlin 委托

Kevin Learn Kotlin:委托

深入kotlin - 委托

深入kotlin - 委托

Kotlin 委托

kotlin委托工厂map存储属性值