代码之家  ›  专栏  ›  技术社区  ›  HelloCW

对于Kotlin中的transform:(String)->String,{“456”}的完整代码是什么?

  •  3
  • HelloCW  · 技术社区  · 6 年前

    transform lambda的定义有趣吗 (String) -> String

    有人告诉我 {"456"} 是的有效值 转型 ,什么是完整的代码 {“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)
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   advice    6 年前

    使用您的示例代码,让我试着解释它在做什么。

    val result = "123".add { it -> "456" }
    
    fun String.add(transform: (String) -> String ) {
        this + transform.invoke(this)
    }
    

    首先,你正在创建一个 String “123”,你在叫兰姆达。现在,在你的羔羊体内, it 将是这个“123”字符串。

    通常,您会以某种方式修改此输入,例如 List.Sort() ,但实际上您正在丢弃该输入并返回“456”。你的lambda的最后一行是return。

    例如,我们可以采用“123”输入,并递增每个数字。这会让你 字符串 ,将其转换为 List 字符数,然后递增每个字符数,然后将它们重新连接在一起。

    val result = "123".add { it -> it.map { it.inc() }.joinToString(separator = "") }
    

    羔羊正在吃 字符串 ,并应用转换并返回新的 字符串 . ( (String) -> String )我认为应该取“123”并返回“234”,它将被附加到“123”123234英寸。

    这有助于解释 (字符串)->字符串 作品?