2013-01-16 3 views
2

저는 스칼라에서 거의 시작하지 않고 기본값이있는 불변 프로퍼티를 가진 클래스를 생성 할 수 있는지, 그리고 생성자에서 프로퍼티 값을 따라 전달할 수 있는지 궁금합니다.누락 된 인수가있는 호출 생성자

그래서 자바 스크립트의 예를 들어 가능합니다 다음 (최종 결과는 불변하지 않습니다하지만 당신은 아이디어를 얻을 수 있습니다) :

var myObj = function(params){ 
    this.a = params.a || 'default a'; 
    this.b = params.b || 'default b'; 
    this.c = params.c || 'default c'; 
}; 

new myObj({c:'override c', b:'override b'}); 

나는 나의 새로운 개체는 기본 값과 새로 구성받을 것 b 및 c 속성 ... 여기서 볼 수 있듯이 생성자는 임의의 수의 객체 속성을 임의의 순서로 허용합니다.

case class Customer(
    val id: Long = 0, 
    val name: String = "" 
) 

은 내가이 할 수있는 알고 :

그래서 스칼라에서 매우 간단한 예제를 복용

val customer = Customer(0, "company") 

을하지만 난이 할 싶습니다

val customer = Customer{ name = "company" } 

정도 나는 50 명의 생성자로 끝나지 않는다.

가능합니까? 방법?

답변

6

javascript와 같이 해시를 전달할 필요는 없지만 단순히 값을 생성자의 매개 변수에 할당하면됩니다. 이것을 "명명 된 매개 변수"라고하며 다음과 같이 보입니다. Customer(name = "Peter")

+0

+1 쉬워졌습니다 ... 감사합니다! – karlipoppins