zoukankan      html  css  js  c++  java
  • 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说清楚,确实不易。

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

  • 相关阅读:
    无限风光 : 近来地形算法学习小结
    上帝的天空之岛
    Layered>Variance>Shadow Map
    好事多磨:Ogre1.7 编译记
    蒙特卡罗(Monte Carlo)方法(转自百度百科)
    linux下压缩打包命令合辑
    Ubuntu Linux 环境搭建|adnroid篇
    个人知识管理(转)
    ubuntu 跳强技巧(转)
    Ubuntu Linux环境搭建|Java篇
  • 原文地址:https://www.cnblogs.com/woodzcl/p/7719858.html
Copyright © 2011-2022 走看看