请忽略实际的“功能”,而在这里更多地关注lambda的使用,因为我正在研究lambda,并让它们运行,以使人对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 = {
任何解释都会对我的理解有很大帮助。
答案 0 :(得分:4)
应该是
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
}
请注意,在mambda中使用return
也是错误的。