[SCALA] 어떻게 스칼라의 () 메소드 마법의 작업을 적용됩니까?
SCALA어떻게 스칼라의 () 메소드 마법의 작업을 적용됩니까?
스칼라에서 나는라는 메소드를 정의하는 경우, 클래스 또는 내가 그 클래스의 인스턴스에 한 쌍에게 괄호를 추가 할 때마다,이 메소드가 호출 될 최상위 객체에 적용하고, 그 사이에 () 적용에 대한 적절한 인수를 넣어 그들. 예를 들면 :
class Foo(x: Int) {
def apply(y: Int) = {
x*x + y*y
}
}
val f = new Foo(3)
f(4) // returns 25
그러니까 기본적으로, 객체 (인수)는 object.apply (인수) 단지 문법 설탕입니다.
어떻게 스칼라는이 변환을합니까?
진행 세계적으로 정의 된 암시 적 변환은 PREDEF 객체의 암시 적 형식 변환과 비슷한 (하지만 종류의 서로 다른), 있나요? 아니면 좀 더 깊은 마법? 스칼라 강하게 규칙의 작은 세트의 일관된 적용을 선호하는 것 같다 때문에 오히려 많은 예외 많은 규칙보다 부탁드립니다. 이것은 처음에 나에게 예외처럼 보인다.
해결법
-
==============================
1.나는 원래 말한 것보다 계속 더 깊은 거기에 아무것도 생각하지 않는다 : 그냥 문법 설탕의 컴파일러는 F 변환된다 (A) f.apply에 (a)는 특수 구문의 경우와.
나는 원래 말한 것보다 계속 더 깊은 거기에 아무것도 생각하지 않는다 : 그냥 문법 설탕의 컴파일러는 F 변환된다 (A) f.apply에 (a)는 특수 구문의 경우와.
이것은 특정 규칙처럼 보일 수도 있지만, (갱신, 예를 들면) 이들 중 몇은 DSL과 같은 구조 및 라이브러리 수 있습니다.
-
==============================
2.실제로 일반적인 경우 주변의 다른 방법, 정보 적용 방법 개체 또는 클래스이고, 함수는 암시 적 적용에있어서와 같은 이름을 가진 객체를 생성하는 방법이다. 실제로 사용자가 정의하는 모든 기능은 Functionn의 특성의 하위 객체 인 (N 인수의 수입니다).
실제로 일반적인 경우 주변의 다른 방법, 정보 적용 방법 개체 또는 클래스이고, 함수는 암시 적 적용에있어서와 같은 이름을 가진 객체를 생성하는 방법이다. 실제로 사용자가 정의하는 모든 기능은 Functionn의 특성의 하위 객체 인 (N 인수의 수입니다).
6.6 절을 참조하십시오 : 스칼라 언어 사양의 기능 응용 프로그램 항목의 자세한 내용은.
-
==============================
3.예. 그리고이 규칙이 작은 세트에 속한다.
예. 그리고이 규칙이 작은 세트에 속한다.
from https://stackoverflow.com/questions/1223834/how-does-scalas-apply-method-magic-work by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 아파치 스파크 1.3에서 데이터 프레임에 열을 추가 (0) | 2019.11.03 |
---|---|
[SCALA] 있는 ScrollView 내부 Google지도 API v2로 SupportMapFragment - 사용자가 수직으로지도를 스크롤 할 수 없습니다 (0) | 2019.11.03 |
[SCALA] 때 스칼라의 특성에 발 또는 데프를 사용 하는가? (0) | 2019.11.03 |
[SCALA] CSR은 탄력이 성을 사용하여 가입 (0) | 2019.11.03 |
[SCALA] 어떻게 로컬 받는다는 프록시 저장소 (넥서스)를 사용하는 SBT받을 수 있나요? (0) | 2019.11.03 |