Tam*_*jin 5 scala partialfunction foldleft
我目前正在学习 Scala,我只是想知道左折叠。由于左折叠是柯里化的,因此您应该能够获得带有第一个参数的部分应用函数(PAF),如下所示。
(0 /: List(1, 2, 3)) _
Run Code Online (Sandbox Code Playgroud)
但实际上,我有一个错误。
<console>:8: error: missing arguments for method /: in trait TraversableOnce;
follow this method with `_' if you want to treat it as a partially applied function
Run Code Online (Sandbox Code Playgroud)
然后我通过向右折叠尝试了同样的事情,如下所示
(List(1, 2, 3) :\ 0) _
Run Code Online (Sandbox Code Playgroud)
这样,它就正确了,我可以得到一个PAF,例如((Int, Int) => Int) => Int
我知道我可以通过使用foldLeft方法获得PAF,但我想知道是否可以用“/:”来表达它。
下划线语法不适用于采用多个参数列表的右关联方法。以下是我看到的选项:
声明变量类型:
val x: ((Int, Int) => Int) => Int = 0 /: List(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)类似地,使用类型归属:
val x = (0 /: List(1,2,3)) : ((Int, Int) => Int) => Int
Run Code Online (Sandbox Code Playgroud)使用后缀表示法:
val x = List(1,2,3)./:(0) _
Run Code Online (Sandbox Code Playgroud)使用foldLeft同义词:
val x = List(1,2,3).foldLeft(0) _
Run Code Online (Sandbox Code Playgroud)