scala - 寻找在 Scala 中动态组合函数的最佳实践

标签 scala

我正在尝试编写 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/

相关文章:

scala - 将 RDD[T] 过滤为类型 T 的子类

scala - 如何将正则表达式解析为整个 spark 数据框而不是每一列?

scala - 参数类型为 "T=",什么意思

scala - 什么情况会抛出异常 "scala.util.control.BreakControl"?

java - 无法启动 Java 客户端 1.5.0 NoSuchMethodException

scala - SBT 本地 Maven 存储库依赖

scala - 处理 Spark UDF 中的所有列/整行

scala - 给定一个 Future[T],我可以编写带有返回 T 的 onComplete 回调的函数吗?

eclipse - 无法禁用 Spark eclipse scala 日志

scala - 下载时sbt卡住了