java - Scala 和 SparkJava,如何使用 lambda 表达式

标签 java scala lambda frameworks anonymous-class

我正在使用 Spark Java 框架。 现在我想使用 Scala。

我很难弄清楚如何在 Scala 中定义简单的路线。

在java中我会这样做:

get('/article/:date', (req, res) -> {
  return "";
});

最佳答案

如果您使用的是 Scala 2.12.x,Scala 函数将尝试将 SAM 直接转换为 Java 函数,因此这是有效的:

object Example {
  def main(args: Array[String]): Unit = {
    get("/article/:date", (req, res) => "")
  }
}

否则,您需要在 Route 上显式实现 handle 方法:

import spark.Spark.get
import spark.{Request, Response, Route}

object Example {
  def main(args: Array[String]): Unit = {
    get("/article/:date", new Route {
      override def handle(request: Request, response: Response) = ""
    })
  }
}

或者可能提供一些隐式以使函数与Route兼容:

object Example {
  implicit def func2ToRoute[T <: AnyRef](f: (Request, Response) => T): Route = new Route {
    override def handle(request: Request, response: Response) = f(request, response)
  }

  def main(args: Array[String]): Unit = {
    get("/article/:date", (req: Request, res: Response) => "")
  }
}

关于java - Scala 和 SparkJava,如何使用 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41764594/

相关文章:

java - AndroidAnnotations 和 Dagger

java - 如何访问 JButton ActionListener 中的变量?

java - 命名对象时是否可以使用变量?

scala - 匹配是语言特征吗?

python - 执行功能的条件

java - 嵌套的 Java 接口(interface)

scala - Spark - 将整行传递给 udf,然后在 udf 中获取列名

java - Play Framework Scala Proxy For Http Post

c# - 如何将 Lambda 表达式转换为 Func<> 变量

java - 按名称实例化 Java lambda 函数