2017-01-20 5 views
1

자바에서 Spark 프레임 워크를 사용하고있었습니다. 이제 스칼라를 사용하고 싶습니다.Scala와 SparkJava, 람다 식 사용법

스칼라에서 간단한 경로를 정의하는 방법을 찾는 데 어려움을 겪고 있습니다. 당신이 스칼라 2.12.x를 사용하는 경우

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

답변

2

하는 스칼라 함수는 SAM은 Java 함수로 직접 변환 할 시도 할 것이다, 그래서이 작품 : 자바에서

나는 이런 식으로 할 거라고

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

그렇지 않으면, 당신은 명시 적으로 Routehandle 메소드를 구현해야합니다 :

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에 호환 기능을 일부 implicits을 제공

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 (스칼라 웹 사이트에서 일식을 기반으로 한) 오류 : "누락 된 매개 변수 형식"에서 (req, res) – ProNOOB

+0

나는 매개 변수 형식을 추가하기로 결정한 것을 제외하고는 여전히 컴파일 및 (x $ 1 : String, x $ 2 : spark.Route) 단위는 (String, (spark.Request, spark.Response) ⇒ String)' – ProNOOB

+0

@ProNOOB I '에 적용 할 수 없습니다. Eclipse에 익숙하지 않습니다. 이것은 IntelliJ로 잘 컴파일됩니다. –