gpt4 book ai didi

scala - 如何在Scala中用更少的括号写f(g(h(x)))?

转载 作者:行者123 更新时间:2023-12-03 22:05:06 24 4
gpt4 key购买 nike

像这样的表达

ls map (_ + 1) sum

之所以很可爱,是因为它们从左到右而不是嵌套的。但是,如果所讨论的函数是在类之外定义的,那么它就不那么漂亮了。

我尝试了 an example之后
final class DoublePlus(val self: Double) {
def hypot(x: Double) = sqrt(self*self + x*x)
}

implicit def doubleToDoublePlus(x: Double) =
new DoublePlus(x)

据我所知,除了
  • 一种方法的大量键入
  • 您需要事先知道要使用这种方式

  • 有没有技巧可以解决这两个问题?

    最佳答案

    您可以在函数对象上调用andThen:

    (h andThen g andThen f)(x)

    但是您不能直接在方法上调用它,因此也许您的 h需要变成 (h _)才能将方法转换为部分应用的函数。编译器将自动将后续方法名称转换为函数,因为 andThen方法接受 Function参数。

    您还可以使用 pipe operator |>编写如下内容:
    x |> h |> g |> f

    关于scala - 如何在Scala中用更少的括号写f(g(h(x)))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7226866/

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