gpt4 book ai didi

scala - 在 scala 中链接函数调用(或等同于 Ruby 的 yield_self)

转载 作者:行者123 更新时间:2023-12-02 08:09:20 24 4
gpt4 key购买 nike

链接函数调用的惯用方式是什么,在每个调用之间传递结果,并在 Scala 中提供参数?

这是一个例子:

def a(x : A, param : String) : A = x
def b(x : A, param : String) : A = x
def c(x : A, param : String) : A = x
def d(x : A, param : String, anotherParam : String) : A = x

val start = A()

d(c(b(a(start, "par1"), "par2"), "par3"), "par4", "anotherPar")

我想到的一种方法是 Ruby 的 Kernel#yield_self,它允许执行以下操作:

start
.yield_self {|x| a(x, "par1") }
.yield_self {|x| b(x, "par2") }
.yield_self {|x| c(x, "par3") }
.yield_self {|x| d(x, "par4", "anotherPar) }

最佳答案

您可以将函数链合并为一个函数:

val start = new A()

val func: (A => A) =
((x: A) => a(x, "par1"))
.andThen(b(_, "par2"))
.andThen(c(_, "par3"))
.andThen(d(_, "par4", "anotherPar"))

func(start)

但我不确定这是否是您的目标。

关于scala - 在 scala 中链接函数调用(或等同于 Ruby 的 yield_self),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48585778/

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