[SCALA] 스칼라의 케이스 클래스에 대한 과부하 생성자?
SCALA스칼라의 케이스 클래스에 대한 과부하 생성자?
스칼라 2.8에서 경우 클래스의 생성자를 오버로드하는 방법은 무엇입니까?
그렇지 않으면 그렇다면, 설명하기 위해 조각을 넣어주세요, 이유를 설명하세요?
해결법
-
==============================
1.생성자를 오버로드의 경우 클래스에 대한 특별한되지 않습니다 :
생성자를 오버로드의 경우 클래스에 대한 특별한되지 않습니다 :
case class Foo(bar: Int, baz: Int) { def this(bar: Int) = this(bar, 0) } new Foo(1, 2) new Foo(1)
그러나, 당신은 또한 당신이 새로운 생략 할 때 호출되는 동반자 개체에 방법을 적용 과부하하실 수 있습니다.
object Foo { def apply(bar: Int) = new Foo(bar) } Foo(1, 2) Foo(1)
스칼라 2.8에서, 이름 및 기본 매개 변수는 종종 대신 오버로드를 사용할 수 있습니다.
case class Baz(bar: Int, baz: Int = 0) new Baz(1) Baz(1)
-
==============================
2.당신은 당신이 "새로운"키워드를 사용할 필요가 오버로드 된 생성자에게 일반적인 방법을 정의 할 수 있지만 그것을 호출 할 수 있습니다.
당신은 당신이 "새로운"키워드를 사용할 필요가 오버로드 된 생성자에게 일반적인 방법을 정의 할 수 있지만 그것을 호출 할 수 있습니다.
scala> case class A(i: Int) { def this(s: String) = this(s.toInt) } defined class A scala> A(1) res0: A = A(1) scala> A("2") <console>:8: error: type mismatch; found : java.lang.String("2") required: Int A("2") ^ scala> new A("2") res2: A = A(2)
from https://stackoverflow.com/questions/2400794/overload-constructor-for-scalas-case-classes by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스칼라 : 패턴 매칭의 짧은 형식 부울을 반환 (0) | 2019.11.11 |
---|---|
[SCALA] 스파크 dataframe에 열의 Null 허용 속성을 변경 (0) | 2019.11.11 |
[SCALA] 스칼라에서, 무엇을 정확히 수행 '발 A : A = _'(밑줄) 평균? (0) | 2019.11.11 |
[SCALA] 어떻게 스파크 RDD / Dataframe 크기를 찾는 방법은? (0) | 2019.11.11 |
[SCALA] 스칼라의 기호 리터럴에 대한 몇 가지 예를 들어, 사용 사례는 무엇입니까? (0) | 2019.11.11 |