请选择 进入手机版 | 继续访问电脑版
本站特色:极好的技术研究氛围!所有技术交流,必有回复!

疯狂Java联盟

 找回密码
 加入联盟
查看: 549|回复: 0

[Android] 回顾局部函数——Lambda表达式之一

[复制链接]
发表于 2017-11-27 22:52:28 | 显示全部楼层 |阅读模式
本帖最后由 kongyeeku 于 2018-2-1 23:20 编辑
本文节选自《疯狂Kotlin讲义》

京东购买地址:https://item.jd.com/12284595.html
当当购买地址:http://product.dangdang.com/25221010.html


Lambda表达式是现代编程语言争相引入的一种语法,如果说函数是命名、方便复用的代码块,那么Lambda表达式则是功能更灵活的代码块,它可以在程序中被传递和调用。

回顾前一节介绍的LocalFunctionTest.kt程序,该程序中的getMathFunc()函数将会返回3个局部函数的其中之一。该函数代码如下:
// 定义函数,该函数的返回值类型为(Int) -> Int
fun getMathFunc(type type:String) -> (Int) -> Int {
        // 定义3个局部函数
        ...
        // 返回局部函数
        when(type) {
                // 返回局部函数
                "square" -> return ::square
                "cube" -> return ::cube
                else -> return ::factorial
        }
}
由于局部函数的作用域默认仅停留在其封闭函数之内,因此这3个局部函数的函数名的作用太有限了——仅仅就是在程序的when表达式中作为返回值使用。一旦离开了getMathFunc()函数体,3个局部函数的函数名就失去了意义。
既然局部函数的函数名没有太大的意义,那么就考虑使用Lambda表达式来简化局部函数的写法。


您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

视频、代码、电子书下载
请关注"疯狂图书"公众号
QQ交流1群: 545923995  未满
微信群请扫二维码
QQ交流1群:
545923995
(未满)

小黑屋|手机版|Archiver|疯狂Java联盟 ( 粤ICP备11094030号 )

GMT+8, 2019-5-22 18:38 , Processed in 0.328655 second(s), 6 queries , File On.

快速回复 返回顶部 返回列表