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 委托的主要内容,如果未能解决你的问题,请参考以下文章