복붙노트

[SCALA] 스칼라에서 익명 함수에서 매개 변수 전에 암시 적 키워드

SCALA

스칼라에서 익명 함수에서 매개 변수 전에 암시 적 키워드

나는 암시 적 매개 변수와 스칼라에서 암시 적 변환을 이해하지만 난 처음으로 오늘 이것을보고 : 익명 함수에서 매개 변수의 앞에 암시 키워드 :

Action { implicit request =>
  Ok("Got request [" + request + "]")
}

암시 적 키워드는 무슨 일을합니까?

이 자원은 사용 사례가 무엇인지에 대한 자세한 설명 웹에 있습니까?

해결법

  1. ==============================

    1.여기에 두 가지 기능이 있습니다.

    여기에 두 가지 기능이 있습니다.

    첫째, 요청은 정말 메소드 호출에 인수되지 않습니다. 그것은 익명 함수의 인수입니다. 익명 함수 자체는 메소드 호출의 인수입니다.

    둘째, 익명 함수에 암시 적 인수를 선언하는 것은 암시 적으로 "강제"는 발에서 당신을 저장할 수있는 편리함을 가지고 :

    Action { request =>
      implicit val r = request
      Ok("Got request [" + request + "]")
    }
    

    나는 이것을 플레이 프레임 워크 코드를 알고 일이 있지만, 나는 확실히 조치 및 확인에 대한 서명이 무엇인지 모르겠습니다. 나는 그들이 그런 일 것으로 추측됩니다

    def Action(r:Request => Result):Unit
    case class Ok(str:msg)(implicit r:Request)
    

    다시, 설명 목적으로 만 순수한 추측입니다.

  2. ==============================

    2.몇 가지 자원을 찾았습니다

    몇 가지 자원을 찾았습니다

    https://issues.scala-lang.org/browse/SI-1492

    https://stackoverflow.com/a/5015161/480674

    두 번째 링크를 "폐쇄의 암시 적 인수"를 검색

  3. ==============================

    3.나의 이해에서 암시 적 수단의 키워드는 일을 컴파일러하자

    나의 이해에서 암시 적 수단의 키워드는 일을 컴파일러하자

    이 범위 안에서 다른 방법 암시 파라미터에 사용될 수있는 암시 적 가변 수단을 선언. 즉, 매개 변수는 암시 기입하도록 컴파일러에 의해 고려되고있다.

     def index = Action { implicit request =>
        val str = sayHi("Jason")
        Ok(views.html.index("Your new application is ready." + str))
      }
    
      private def sayHi(name: String)(implicit req: Request[AnyContent]) = name + ", you can the following content" + req.body
    

    I 형 요청 [AnyContent] 내재적 파라미터 REQ가 내재 변수 요청을 참조하기 위해 컴파일러에 의해 충전되기 때문에, 단, I는 ( "제이슨")에만 제 sayHi 파라미터 메소드를 호출하여 sayHi에 내재 파라미터 REQ 선언

  4. from https://stackoverflow.com/questions/12685591/implicit-keyword-before-a-parameter-in-anonymous-function-in-scala by cc-by-sa and MIT license