android - 什么是 {"456"的完整代码} 转换 : (String) -> String in Kotlin?

标签 android kotlin

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/

相关文章:

java - 无法覆盖 Kotlin 中的 Java 函数

中心项目更大的Android ViewPager

Android 3.0,小部件预览

android - Kotlin for Android - Kotlin 编程

没有操作栏的Android滑动菜单

android - 即使我完成了该应用程序,它也会继续返回到之前的 Activity

java - Android:获取原始文件夹中文本文件的行数

java - 我可以通过编程方式检测当前 WiFi 网络上是否有任何 Chromecast 设备吗?

java - Android 2.3 使用 Fragment 时保持 ListView 位置

kotlin - 了解Kotlin泛型中的初始化和赋值之间的区别