理解compose和andThen使用方法

compose

val f0 = f1.compose(f2)

返回函数f0,当调用f0(someargs)时,会先执行f2(someargs),然后将f2运行的结果作为参数,交由f1去执行,相当于这样f1(f2(someargs))。

val f1 = (arr:List[String])=>println(arr)
val f2 = (arr:List[String])=>"added-item"::arr;
val f0 = f1.compose(f2)

f0(List("111","222"))
// List(added-item, 111, 222)
f1(f2(List("111","222")))
// List(added-item, 111, 222)

andThen

val f0 = f1.andThen(f2)

返回函数f0,当调用f0(someargs)时,会先执行f1(someargs),然后再将f1的运行结果作为参数,交由f2去执行,相当于这样f2(f1(someargs))。

val f1 = (arr:List[String])=>arr;
val f2 = (arr:List[String])=>"added-item"::arr;
val f0 = f1.andThen(f2)

f0(List("111","222")
// res0: List[String] = List(added-item, 111, 222)
f2(f1(List("111","222")))
// res1: List[String] = List(added-item, 111, 222)

可以理解为compose和andThen的执行流程是相反的。

猜你喜欢

转载自blog.csdn.net/AndCompose/article/details/82503233
今日推荐