为了账号安全,请及时绑定邮箱和手机立即绑定

对于 Kotlin 中的高阶函数,为什么 lambda 表达式显示在其他函数参数之外?

对于 Kotlin 中的高阶函数,为什么 lambda 表达式显示在其他函数参数之外?

慕容森 2022-12-21 16:35:42
在我正在复习的一些培训中,我不完全理解示例高阶函数和 lambda 是如何通过语法连接的这个高阶 Kotlin 函数fun myWith(name: String, block: String.() -> Unit) {  name.block()}是这样调用的myWith(fish.name) {  capitalize()}我知道第二部分是一个 lambda,但我不明白为什么它没有作为函数的第二个参数包含在内,而是挂在参数之外。比如为什么它不被调用为:myWith(fish.name, { capitalize() } )稍后对该示例的更详细描述显示为myWith(fish.name, object : Function1<String, Unit> {  override fun invoke(name: String) {    name.capitalize()  }})哪个是在正常参数列表中包含 lambdamyWith
查看完整描述

1 回答

?
杨魅力

TA贡献1811条经验 获得超5个赞

在 Kotlin 中,有一个约定,如果函数的最后一个参数接受一个函数,则可以将作为相应参数传递的 lambda 表达式放在括号外。

来源:https ://kotlinlang.org/docs/reference/lambdas.html#passing-a-lambda-to-the-last-parameter


查看完整回答
反对 回复 2022-12-21
  • 1 回答
  • 0 关注
  • 65 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信