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

Scala和SparkJava,如何使用lambda表达式,java,scala,lambda,frameworks,anonymous-class,Java,Scala,Lambda,Frameworks,Anonymous Class,我使用的是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/

我使用的是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) => "")
  }
}
否则,您需要在
路由
上显式实现
句柄
方法:

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) = ""
    })
  }
}
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) => "")
  }
}
或者可能提供一些隐含信息,以使函数与
路由
兼容:

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) = ""
    })
  }
}
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) => "")
  }
}
对象示例{
隐式def func2ToRoute[T]:路由=新路由{
覆盖def句柄(请求:请求,响应:响应)=f(请求,响应)
}
def main(参数:数组[字符串]):单位={
get(“/article/:date”,(请求:请求,响应)=>”)
}
}

我正在尝试第一个选项。除了我的Scala IDE(基于来自Scala网站的eclipse的IDE)显示一个错误外,一切都编译得很好,工作也很好。(req,res)处的“缺少参数类型”我决定添加参数类型,它仍然编译并工作,但我在eclipse中遇到了不同的错误:
(x$1:String,x$2:spark.Route)无法将单位应用于(字符串,(spark.Request,spark.Response)⇒ 字符串)
@ProNOOB我对Eclipse不太熟悉。IntelliJ编译起来很好。哇,IntelliJ让我的工作轻松多了。