2016-07-20 2 views
1

Slick 구현을위한 모범 사례를 읽고 있었고 this example을 조사했습니다.This : SomeObject => object construct

trait BankRepository extends BankTable { this: DBComponent => 
    ... //A bunch of code 
} 

나는 this: DBComponent => 부분을 이해하지 않습니다 : 그것은,이 구조가있다. 이 경우 DBComponent은 다른 곳에서 정의 된 단순한 특성입니다 (위의 링크에서 찾을 수 있습니다). 내가 이해하지 못하는 것은 다음 this: DBComponent =>을 구축하는 일

  • . 내 IDE는 불평하지 않지만 =>에 의해 실행되는 기능에 연결되지 않습니다. 내 직감은 코드의 나머지 부분이 리턴되는 값이라는 것을 말하는 것이지만, 호출하는 부분이나 리턴 된 값이 정확히 무엇인지 명확하지 않습니다.
  • 이 구성을 무엇이라고 부릅니 까? 많은 기호가 많은 구조와 마찬가지로 문맥에 의존적이기 때문에 문서를 찾거나 찾지 못합니다. 그러나 상황을 설명하는 것조차 어렵습니다. 이 구조는 무엇이라고 불 립니 까?

답변

4

자체 유형이라고합니다. 기본적으로이 특성을 확장하는 모든 클래스 (0120)는 이어야하며DBComponent이어야합니다. 그리고 컴파일러는 DBCompenent 요소가 다음 코드의 범위에 있다고 가정해야합니다.

여기 link에 대한 설명은 입니다. Scales의 프로그래밍, Odersky 외, 1st Edition (날짜는 있지만 대부분의 주제에서는 여전히 정확합니다).

+0

흥미 롭습니다! 이 문제에 관한 문서에 대한 링크가 있습니까? 또한, 이것이 형식 설명으로 마술처럼 들어 올려 진 한 줄짜리 줄로 생각해야합니까? 예를 들어, 특성의 중간에 넣을 수 있을까요? –

+0

나는 특성/클래스 코드의 맨 위에서 만 본 적이있다. IntelliJ IDE를 사용한 몇 가지 빠른 실험은 컴파일러가 맨 위에 있지 않으면 컴파일러가이를 거부 함을 나타냅니다. – jwvh

+0

내 실험 결과와 동일한 결과가 나왔지만 컴파일러가 중괄호 안에 형식 정보를 얻는 방법을 정확히 알지 못했습니다. (컴파일러에 대한 나의 이해를 넘어서). 도움에 감사드립니다! –

관련 문제