我正在使用 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/