현지 var / 운영 구성자를 val 에 스칼라 정의하시려면 어떻게 해야 할까요?

39 의 스칼라, a 의 주요 구성자를 class& 에서 정의된 클래스 주님으로부터그에게 명시성 바디입니다 것이 아니라, 암시적으로 바디입니다. 그렇다면 어떻게 구분해야 할까요 필드 및 현지 값 (즉, 해당 값을 구성자를 방법) 은 무엇입니까?

예를 들어, 다음과 같은 코드를 스니핏 에서 일부 수정된 형태로, 시행하십시오 &quot Scala&quot 있는 샘플 코드, 프로그래밍,:

class R(n: Int, d: Int) {
   private val g = myfunc
   val x = n / g
   val y = d / g
}

이것만으로도 이해하는 것은 내 3 개 클래스 필드: g&quot, 공공, 민간 &quot &quot x";; 그리고 y&quot ";). 그러나 ᄀ씨는 대해서만 사용할 계산 값은 x 축과 y 필드, 주님으로부터그에게 마무리라뇨 내시경이요 구성자를 넘어

따라서 이 (알듯 인공) 의 값을 어떻게 acrobatconnectcentral. 검색하기를 정의에 대한 이 지역 구성자를?

질문에 대한 의견 (1)
해결책

E. g.

class R(n: Int, d: Int) {
  val (x, y) = {
    val g = myfunc
    (n/g, d/g)
  }
}
해설 (4)

그렇게 몇 가지 방법이 있습니다. 임시 변수를 사용할 수 시간 동안 건설 등 개인 redefinitions 인사이드라면 선언할 수 있습니다. 블록 안에 있는 표현식에서는 반품하십시오 임시 변수를 사용할 수 있습니다 (같이 Alaz& # 39 의 답). 또는, 마지막으로 뷰대체 구성자를 인사이드라면 등 변수를 사용할 수 있습니다.

비슷한 방식으로 대체 구성자를 object-companion& # 39 의 &quot apply&quot, 내부의 정의하십시오 수도 있습니다. 메서드입니다.

39 건, 필드 스크램블된 너희는너희가 can& t 너희가운데 temporary&quot ";).

또한 주 () 는 모든 매개변수입니다 받은 구성자를 필드이므로 있다. # 39 don& 경우, t, t want 노출시킵니다 don& # 39 될 수 있도록 하는 등 매개변수입니다 필드, 실제 필드에 구성자를, 일반적인 방법은 실제 사용할 수 있는 기본 생성자를 private 필드, 대체 구성자를 호스트였든 object-companion& # 39 의 적용하십시오 () 에 유효 &quot primary"; 구성자를.

해설 (0)

우리는 또 다른 옵션은 기본 객체 생성자를 사용할 수 있다, 개인 및 동반 object& # 39 의 한 방법으로 적용하십시오 구성기는. 만약 우리가 이 적용하십시오 (푼 것이 아닙니다.) 이 외곽진입 데이터베이스에구성원을 예제에서와 다음과 같습니다.

class R private (val x: Int, val y: Int);

object R {
  def apply(n: Int, d: Int): R = {
    val g = myfunc;
    new R(n / g, d / g);
  }
}

대신 R 인스턴스를 만듭니다.

val r = new R(1, 2);

쓰기:

val r = R(1, 2);

이는 자세히, 하지만 조금 더 악화될 수 있다고 생각한다.). # 39 의 pbs. let& 바란다 [이] vals 취급함 향후 由대 利덈 스칼라 임시 변수. 마틴 자살했죠 시사했다.

해설 (2)

이 주제에 대한 의견 등 일부 Odersky& # 39 는 [here] 의 마틴 (http://www.scala-lang.org/node/1198 # 3430 주석문입니다.)

해설 (2)