繁体   English   中英

Scala和SparkJava,如何使用Lambda表达式

[英]Scala and SparkJava, how to use lambda expressions

我在Java中使用Spark框架。 现在,我想使用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) => "")
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM