我正在尝试编写 Scala 代码以从客户端代码中获取函数列表并使用链式方法组合它并最终应用组合函数并且我能够做到......但我觉得我没有这样做一种功能性的方式,因为我在 Test.scala(下面)中用“var”声明了一个函数变量,并在它之上继续组合函数。我相信应该有更好的方法,任何指导和建议都会对我有所帮助
测试.scala
case class Test(val int: Int){
private final var function : Int => Int = (i: Int) => i
def composeFunction( f: Int => Int) : this.type = {
function = function.andThen(f);
this;
}
def applyFunction : Int = {
function(int)
}
}
客户端代码:Main.scala
val c = new Test(6)
.composeFunction((i: Int) => i *2)
.composeFunction((i: Int) => i *4)
.composeFunction((i: Int) => i *6)
.applyFunction
最佳答案
val c = Some(6)
.map((i: Int) => i *2)
.map((i: Int) => i *4)
.map((i: Int) => i *6)
.get
如果你需要惰性求值,可以使用 cats 库
val lazyEval = Eval.later(6)
.map((i: Int) => i *2)
.map((i: Int) => i *4)
.map((i: Int) => i *6)
.value
关于scala - 寻找在 Scala 中动态组合函数的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55679965/