3
변형 가능한 이름 필드가 필요한 일부 클래스를 지원하는 Renamable
특성을 정의하고 싶습니다. 는 여기에서 내 첫 번째 샷 :"무한 자기 유형"과 같은 것이 있습니까?
trait Renamable {
self =>
var name:String = _
def withName(name:String) = {
self.name = name
self
}
}
class Person extends Renamable {
def sayHello = println(s"Hello, i am $name")
}
내 문제는 withName()
반환 형식이 체인 방법은 다음과 같이 호출에 저를 허용하지 않는, Renamable
로 추정된다는 점이다 :
new Person().withName("Julio").sayHello
//Error: value sayHello is not a member of Renamable
내가했습니다 내가 자체 형식 주석을 가질 수 및 반환 형식으로 사용할 수 있지만 미리 사용할 수있는 형식을 모르는 읽습니다. 나는 무한대로 형질을 사용하는 계급과 같은 복귀를 원합니다.
"제한없는 자체 유형"을 사용할 수 있습니까?
놀라운 :이 유형의 유일한 유효 값은 호출 사이트가 반환 된 값은 호출 수신기가 있음을 알 수 있습니다 따라서
this
입니다! –