Scala의 apply () 메서드 매직은 어떻게 작동합니까?
Scala apply
에서 클래스 나 최상위 객체에서 호출되는 메서드를 정의하면 해당 클래스의 인스턴스에 괄호 쌍을 추가하고 그 apply()
사이에 적절한 인수를 넣을 때마다 해당 메서드가 호출 됩니다. 예를 들면 :
class Foo(x: Int) {
def apply(y: Int) = {
x*x + y*y
}
}
val f = new Foo(3)
f(4) // returns 25
그러니까 기본적으로, object(args)
단지 문법 설탕입니다 object.apply(args)
.
Scala는이 변환을 어떻게 수행합니까?
Predef 개체의 암시 적 형식 변환과 비슷하지만 종류가 다른 전역 정의 암시 적 변환이 여기에서 진행되고 있습니까? 아니면 더 깊은 마법인가요? 나는 Scala가 많은 예외를 가진 많은 규칙보다 작은 규칙 세트의 일관된 적용을 강력하게 선호하는 것처럼 보이기 때문에 묻습니다. 이것은 처음에는 나에게 예외처럼 보입니다.
나는 아무것도에가는 깊이 생각하지 않는 것보다 원래 말한 : 그냥 문법 설탕의 이에 컴파일러 변환 f(a)
에 f.apply(a)
특별한 문법의 경우와.
이것은 특정 규칙처럼 보일 수 있지만 이들 중 일부 (예 :) 만이 DSL 과 유사한 구조 및 라이브러리를 update
허용합니다 .
실제로는 반대로 적용 메서드가있는 개체 또는 클래스가 일반적인 경우이고 함수는 적용 메서드를 사용하여 동일한 이름의 개체를 암시 적으로 구성하는 방법입니다. 실제로 정의하는 모든 함수는 Function n 특성 의 하위 객체입니다 (n은 인수 수).
주제에 대한 자세한 내용은 섹션 6.6 : Scala 언어 사양 의 함수 응용 프로그램 을 참조하십시오 .
나는 Scala가 많은 예외가있는 많은 규칙보다 작은 규칙 집합의 일관된 적용을 강력하게 선호하는 것처럼 보이기 때문에 묻습니다.
예. 그리고이 규칙은이 작은 집합에 속합니다.
참고 URL : https://stackoverflow.com/questions/1223834/how-does-scalas-apply-method-magic-work
'Program Tip' 카테고리의 다른 글
Log4J에서 임계 값은 무엇을 의미합니까? (0) | 2020.10.11 |
---|---|
연관성과 종속성의 차이점은 무엇입니까? (0) | 2020.10.11 |
JavaScript 표현식에서 쉼표는 무엇을합니까? (0) | 2020.10.10 |
힘내 및 하드 링크 (0) | 2020.10.10 |
github는 프로젝트의 언어를 어떻게 알아 내나요? (0) | 2020.10.10 |