compose(或<=<)在无点和无点样式之间进行翻译时更自然一些.例如,如果我们有这些功能:
val f: Int => Int = _ + 1
val g: Int => Int = _ * 10
Run Code Online (Sandbox Code Playgroud)
我们得到以下等价物:
scala> (f andThen g)(3) == g(f(3))
res0: Boolean = true
scala> (f compose g)(3) == f(g(3))
res1: Boolean = true
Run Code Online (Sandbox Code Playgroud)
在compose情况下,f并g在等式两边的顺序相同.
不幸的是,Scala的类型推断通常会使andThen(或>=>)更方便,并且它的使用范围往往更广泛compose.因此,这是一个数学约定和Scala类型推理系统的怪癖不一致的情况.Scalaz(考虑到项目的文化,并不太令人惊讶)选择数学方面.
| 归档时间: |
|
| 查看次数: |
281 次 |
| 最近记录: |