2017-01-20 6 views
1

私はSparkのフレームワークをJavaで使っていました。 スカラを使いたいです。ScalaとSparkJava、ラムダ式の使い方

私はScalaで簡単なルートを定義する方法を理解するのに苦労しています。あなたはScalaの2.12.xを使用している場合

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

答えて

2

は、Scalaの関数はSAMがJava関数に直接変換することを試みますので、これは動作します:Javaで

私はこのようにそれを行うだろう

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 { 
    def main(args: Array[String]): Unit = { 
    get("/article/:date", (req, res) => "") 
    } 
} 

そうでない場合は、明示的にRoutehandleメソッドを実装する必要がありますおそらく

それとも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) => "") 
    } 
} 
+0

私は最初のオプションをしようとしています。スカラIDE(scalaのウェブサイトからEclipseに基づいたもの)が私にエラーを表示していることを除けば、すべてがうまくコンパイルされています。 – ProNOOB

+0

私はパラメータタイプを追加することを決めました。 (x $ 1:String、x $ 2:spark.Route)ユニットは(String、(spark.Request、spark.Response)⇒String)に適用できません。 – ProNOOB

+0

@ProNOOB I Eclipseには慣れていません。これはIntelliJでうまくコンパイルされます。 –