Kotlin官方文档翻译—《Functions and Lambdas-Lambdas》
2018-01-05 09:50
381 查看
高阶函数和Lambda表达式
高阶函数
高阶函数是一种“使用函数当参数或者返回一个函数”的函数。一个好的例子是lock(),它的参数是一个
Lock对象和一个函数,在函数内得到锁,执行函数最后释放锁:
fun <T> lock(lock: Lock, body: () -> T): T { lock.lock() try { return body() } finally { lock.unlock() } }
让我们检查一下上面的代码:
body拥有一个函数类型:
()->T,所以它应该是一个无参函数并返回
T。它持有锁并在
try-catch代码块中被调用,结果被
lock()返回。
如果我们想调用
lock(),我们可以传入另一个函数作为其参数(参见function references):
fun toBeSynchronized() = sharedResource.operation() val result = lock(lock, ::toBeSynchronized)
此外,更方便的方法是传入一个lambda表达式:
val result = lock(lock, { sharedResource.operation() })
下面会详细讲
lambda表达式,我们这里简单看一下:
lambda表达式总是被
{}围着;
它的参数在
->前声明,参数可以省略不写;
函数体在
->后(如果存在函数体)。
相关文章推荐
- Kotlin官方文档翻译—《Functions and Lambdas-Functions》
- MongoDB用户和角色管理(源自对官方文档的翻译并总结——Manage Users and Roles)
- Kotlin官方文档翻译,类和对象:类和继承
- kotlin官方文档中文翻译(一)基础语法,习惯用法,编码习惯
- Kotlin代理属性--官方文档翻译
- Google Android官方文档进程与线程(Processes and Threads)翻译
- 【Android 官方文档】翻译Android官方文档 Processes and Threads(五)
- AVFoundation Programming Guide(官方文档翻译5)Still and Video Media Capture - 静态视频媒体捕获。
- kotlin官方文档中文翻译(三) 类和对象
- Android官方文档翻译 十八 4.2Pausing and Resuming an Activity
- Applying Styles and Themes - 应用Style和Theme - Android官方文档中文翻译
- AVFoundation Programming Guide(官方文档翻译7)Time and Media Representations 时间和媒体表示
- Applying Styles and Themes - 应用Style和Theme - Android官方文档中文翻译
- [Unity官方文档翻译]Downloading and Installing Unity下载和安装unity教程
- Kotlin代理属性--官方文档翻译
- [Guava官方文档翻译] 2.使用和避免使用null (Using And Avoiding Null Explained)
- Quartz 第二课 Jobs and Triggers(官方文档翻译)
- Kotlin官方文档翻译—概述
- Spark SQL,DataFrames and DataSets Guide官方文档翻译