[SCALA] 스칼라 생성자 매개 변수의 기본 개인 발을합니까?
SCALA스칼라 생성자 매개 변수의 기본 개인 발을합니까?
나는 시도하고있다 :
class Foo(bar: Int)
대 :
class Foo(private val bar: Int)
그들은 내가 그 (막대 말을 어디서든 찾을 수 있지만 동일하게 동작하는 것 : INT가) (개인 발 줄로 확장 : INT) 그래서 내 질문은, 다음은 유사 / 동일?
이 코드 조각과 그들이에 타이 퍼 : 보조 노트에, 나는 -Xprint를 사용하는 것을 시도하고있다 두번째의 추가 라인을 제외하고 동일한 부호를 생성한다. 내가 어떻게 할 그 여분의 라인을 읽어?
..
class Foo extends scala.AnyRef {
<paramaccessor> private[this] val bar: Int = _;
def <init>(bar: Int): this.Foo = {
Foo.super.<init>();
()
}
}
..
..
class Foo extends scala.AnyRef {
<paramaccessor> private[this] val bar: Int = _;
<stable> <accessor> <paramaccessor> private def bar: Int = Foo.this.bar;
def <init>(bar: Int): this.Foo = {
Foo.super.<init>();
()
}
}
..
해결법
-
==============================
1.바 : Int 인
바 : Int 인
이것은 거의 생성자 매개 변수입니다. 이 변수가 어디 생성자를 제외하고 사용하지 않으면이 남아있다. 어떤 필드가 생성되지 않습니다. 그렇지 않으면 개인 발 바 필드가 작성되어 줄 매개 변수의 값은 할당됩니다. 어떤 게터이 만들어지지 않습니다.
개인 발 바 : 지능
매개 변수의 이러한 선언은 개인 게터와 개인 발 바 필드를 생성합니다. 파라미터 생성자 (예컨대 된 toString () 또는 생략) 옆에 사용 된 경우에 이러한 문제가없이 상기와 동일하다.
바 가치 : 지능
이상하지만 스칼라 같은 게터와 동일는 공개
바 : 경우 클래스의 지능
경우 수업 참여 때, 기본적으로 각 매개 변수는 발 수정이 있습니다.
-
==============================
2.첫 번째 경우, 줄은 생성자 파라미터이다. 주요 생성자는 클래스 자체의 내용이기 때문에,하지만 바로이 예에서, 거기에 액세스 할 수 있습니다. 그래서 거의 동일합니다 :
첫 번째 경우, 줄은 생성자 파라미터이다. 주요 생성자는 클래스 자체의 내용이기 때문에,하지만 바로이 예에서, 거기에 액세스 할 수 있습니다. 그래서 거의 동일합니다 :
class Foo(private[this] val bar:Int)
한편, 두 번째 경우 줄에 일반 민간 분야이므로이 인스턴스와 푸의 다른 인스턴스에 액세스 할 수 있습니다. 예를 들어,이 미세 컴파일합니다 :
class Foo(private val bar: Int) { def otherBar(f: Foo) { println(f.bar) // access bar of another foo } }
그리고 실행 :
scala> val a = new Foo(1) a: Foo = Foo@7a99d0af scala> a.otherBar(new Foo(3)) 3
하지만이되지 않습니다 :
class Foo(bar: Int) { def otherBar(f: Foo) { println(f.bar) // error! cannot access bar of another foo } }
from https://stackoverflow.com/questions/14694712/do-scala-constructor-parameters-default-to-private-val by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스칼라는 이상한 행동을 foreach는 (0) | 2019.10.31 |
---|---|
[SCALA] 스칼라 형 ascriptions의 목적은 무엇인가? (0) | 2019.10.31 |
[SCALA] 어떻게 SBT 자식에서 종속 아티팩트를 당겨 수 있습니까? (0) | 2019.10.31 |
[SCALA] 차이가 감소하고 foldLeft / 함수형 프로그래밍 (특히 스칼라 및 스칼라 API)를 폴드 간의? (0) | 2019.10.31 |
[SCALA] 아파치 스파크 : mapPartitions 대이란? (0) | 2019.10.31 |