transform
的定义很有趣 (String) -> String
有人告诉我 {"456"}
是 transform
的有效值,{"456"}
的 transform: (String) -> String
的完整代码是什么?
代码 A 是否正确?
代码A
val aa="123".myAdd{a:String -> "456"}
代码B
val aa="123".myAdd{"456"}
fun String.myAdd(transform: (String) -> String ) = this + transform(this)
最佳答案
使用您的示例代码,让我尝试解释它在做什么。
val result = "123".add { it -> "456" }
fun String.add(transform: (String) -> String ) {
this + transform.invoke(this)
}
首先,您要创建一个 String
“123”,并在其上调用 lambda。现在,在您的 lambda 中,它
将是这个“123”字符串。
通常,您会以某种方式修改此输入,例如 List.Sort()
,但实际上您是在丢弃该输入并仅返回“456”。 lambda 的最后一行是返回值。
例如,我们可以采用“123”输入,并递增每个数字。这会将您的 String
转换为字符的 List
,然后递增每个字符,然后将它们重新组合在一起。
val result = "123".add { it -> it.map { it.inc() }.joinToString(separator = "") }
lambda 接受一个 String
,“123”,并应用您的转换并返回一个新的 String
。 ((String) -> String
) 我认为应该采用“123”并返回“234”,它将附加到“123”。 “123234”。
这是否有助于解释 lambda (String) -> String
的工作原理?
关于android - 什么是 {"456"的完整代码} 转换 : (String) -> String in Kotlin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51549724/