gpt4 book ai didi

Scala:是否可以从 leftfold 获得部分应用的功能?

转载 作者:行者123 更新时间:2023-12-01 00:54:47 25 4
gpt4 key购买 nike

我目前正在学习 Scala,我只是想知道 fold-left。
由于 fold-left 是柯里化(Currying)的,因此您应该能够获得具有以下第一个参数的部分应用函数 (PAF)。

(0 /: List(1, 2, 3)) _

但实际上,我有一个错误。
<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

然后我通过 fold-right 尝试了同样的事情,如下所示
(List(1, 2, 3) :\ 0) _

这样,它就正确了,我可以得到一个 PAF,例如 ((Int, Int) => Int) => Int

我知道我可以通过使用 foldLeft 方法获得 PAF,但我想知道是否可以用 '/:' 表示它。

最佳答案

下划线语法不适用于采用多个参数列表的右关联方法。以下是我看到的选项:

  • 声明一个变量类型:
    val x: ((Int, Int) => Int) => Int =  0 /: List(1, 2, 3)
  • 同样,使用类型归属:
    val x = (0 /: List(1,2,3)) : ((Int, Int) => Int) => Int
  • 使用后缀表示法:
    val x = List(1,2,3)./:(0) _
  • 使用 foldLeft代名词:
    val x = List(1,2,3).foldLeft(0) _
  • 关于Scala:是否可以从 leftfold 获得部分应用的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28812490/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com