kotlin

Kotlin小记:Lambda表达式函数文法

2017-06-19  本文已影响80人  萧延强

今天微信群里有童鞋不明白下面的代码

    val lam = { x: Int, x2: (a: Int) -> Int -> x == x2.invoke(x - 1) }
    val lam1 = lam(1, { x -> x - 3 })
    println(lam1)

我觉得这种代码纯秀技术肌肉或者做做学习实验倒是可以,但在团队开发里,除非成员整体水平都能快速读懂这种代码,否则不建议这样写。

其实这段代码不是特别难读,主要是Lambda表达式函数文法(我好像翻译得怪怪的)
参考官方文档lambda-expression-syntax

只要把上面的代码拆解一下就好懂了(为了更容易理解,这里就不用单表达式函数来写)

    // 这就是lam函数
    fun lam(x: Int, x2: (a: Int) -> Int): Boolean {
        return x == x2.invoke(x - 1)
    }

    // 这就是 { x -> x - 3 } 函数定义
    val funDef = fun(a: Int): Int {
        return a - 3;
    }

    val lam1 = lam(1, funDef)
    
    println(lam1)

Kotlin很灵活,语法糖也很多,滥用有时候会影响阅读。
无论工具如何进化,人技术素养才是关键。

上一篇下一篇

猜你喜欢

热点阅读