kotlin - Kotlin:在 lambda 中命名参数
问题描述
请忽略实际的“功能”,并在这里更多地关注 lambda 的使用,因为我正在使用 lambdas,让,也,运行等来感受 Kotlin。
val listener : (String?)->String = {
val s2 = it?.also {
}
?: "Null"
statusText.text=s2
s2
}
因此,将 lambda 分配给“侦听器”就可以了。
有人可以告诉我为什么我无法为第一个(也是唯一的)参数分配名称,例如。
val listener : (s: String?)->String = {
val s2 = s?.also {
}
?: "Null"
statusText.text=s2
s2
}
在“val s2=s?.also...”这一行中,编译器抱怨“s”是一个未解析的引用。如果是这样,为什么参数的命名是合法的,例如:
val listener : (s: String?)->String = {
任何解释都会对我的理解有很大帮助。
解决方案
它应该是
val listener : (s: String?) -> String = { s ->
val s2 = s?.also {
} ?: "Null"
statusText.text=s2
s2
}
或者干脆
val listener : (String?) -> String = { s ->
val s2 = s?.also {
} ?: "Null"
statusText.text=s2
s2
}
请注意,return
在 mambda 中使用也是不正确的。
推荐阅读
- reactjs - 构建 React 应用程序时是否需要包含节点模块?
- reactjs - React SPA 在开发机器上工作,但只有一级路由在 Azure 上工作
- javascript - Mongoose 仅按时间排序日期
- c# - SignalR 核心集线器连接 lambda 动作
- reactjs - npm 错误!找不到模块“鹰”
- r - tidyr:每个键收集两个值
- python - 如何将格式化为 unicode 的字符串转换为 unicode?
- python - 如何将未知的 Bigint 日期时间格式转换为日期时间
- java - 数组列表 Java
- python - 检测用户正在查看哪个立方体?