您的位置:首页 > 其它

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
表达式总是被
{}
围着;

它的参数在
->
前声明,参数可以省略不写;

函数体在
->
后(如果存在函数体)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: