Ped*_*ges 4 lambda chaining kotlin
...或相当于java.util.Function.andThen()
爪哇语
Function<String, String> add1 = string -> string + "1";
Function<String, String> add2 = string -> string + "2";
Function<String, Strint> add12 = add1.andThen(add2);
Run Code Online (Sandbox Code Playgroud)
add12.apply("")回报"12"
我该如何用 Kotlin 编写它?
val add1 = { string:String -> string + "1" }
val add2 = { string:String -> string + "2" }
val add12 = ?
Run Code Online (Sandbox Code Playgroud)
您正在寻找的功能称为函数组合。据我所知,它不是 Kotlin 内置的(希望对此进行更正)。但将其编写为扩展函数非常容易。
infix fun<A, B, C> ((B) -> C).compose(that: (A) -> B): (A) -> C =
{ this(that(it)) }
Run Code Online (Sandbox Code Playgroud)
现在我们可以写
val add1 = { string:String -> string + "1" }
val add2 = { string:String -> string + "2" }
println((add2 compose add1)("3")) // Prints "312"
Run Code Online (Sandbox Code Playgroud)
我写作compose时使用从右到左的组合,更符合数学函数的工作方式。
| 归档时间: |
|
| 查看次数: |
729 次 |
| 最近记录: |