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)
答案 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
的工作原理吗?