복붙노트

[SCALA] 스칼라에서 ETA 확장은 무엇입니까?

SCALA

스칼라에서 ETA 확장은 무엇입니까?

나는 스칼라에 새로운 오전. 난 그냥 용어는 "ETA 확장"을 듣고 약은 함수 객체에 대한 방법을 확장하는 것을 의미 것을 알고있다. 그러나 나는 그 체계적으로 소개 SO에 몇 가지 자료를 찾을 수 있습니다.

나는 ETA 확장 스칼라에서 어떻게 작동하는지 궁금합니다. ETA 확장이 필요하다는 시나리오는 무엇인가? 어떻게 ETA 확장하는 것은 스칼라에서 구현된다?

나는 대략 이런 경우에 알고 :

def someMethod(x: Int): Int = x * x

것으로 someMethod _는 대략 같은 새로운 함수 객체로 변환 될 것입니다 :

new Function1[Int, Int] {
  def apply(x: Int): Int = x * x
}

그것은 스칼라가하는 모든인가?

해결법

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

    1.정의, 그리고 몇 가지 예는, http://scala-lang.org/files/archive/spec/2.11/06-expressions.html#method-values에 제시되어있다.

    정의, 그리고 몇 가지 예는, http://scala-lang.org/files/archive/spec/2.11/06-expressions.html#method-values에 제시되어있다.

    그렇진 : 그것은 사실입니다

    new Function1[Int, Int] {
      def apply(x: Int): Int = someMethod(x)
    }
    

    차이는, 예를 들어 문제 경우 것으로 someMethod 어딘가 무시됩니다.

    또한이 방법은 여러 매개 변수 목록을 취하면 어떻게되는지 고려해야 할 또는 별 이름 매개 변수 (당신은 함수를 반환하는 함수를 얻을).

    ETA 팽창 및 자리 (것으로 someMethod (_))와 익명 함수를 사용하는 등에 의해 입력 추론 implicits, 다르게 행동 할 수 있음을 유의

  2. from https://stackoverflow.com/questions/39445018/what-is-the-eta-expansion-in-scala by cc-by-sa and MIT license