用于转换的{“ 456”}的完整代码是什么:(String)-> Kotlin中的String?

时间:2018-07-27 01:52:41

标签: android kotlin

transform很有趣,定义为(String) -> String

有人告诉我{"456"}transform的有效值,{"456"}的完整代码transform: (String) -> String是什么?

代码正确吗?

代码A

val aa="123".myAdd{a:String -> "456"}

代码B

val aa="123".myAdd{"456"}

fun String.myAdd(transform: (String) -> String ) = this + transform(this)

1 个答案:

答案 0 :(得分:4)

使用您的示例代码,让我尝试解释它的作用。

val result = "123".add { it -> "456" }

fun String.add(transform: (String) -> String ) {
    this + transform.invoke(this)
}

首先,您要创建一个String“ 123”,并为此调用一个lambda。现在,在您的lambda中,it将是此“ 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的工作原理吗?