복붙노트

[SCALA] 이 스칼라 변수로 튜플 할당을 할 수 있습니까? [복제]

SCALA

이 스칼라 변수로 튜플 할당을 할 수 있습니까? [복제]

스칼라에서, 하나는 튜플에 여러 변수 할당을 통해 수행 할 수 있습니다

val (a, b) = (1, 2)

그러나 변수에 할당 유사한 구문은 작업에 표시되지 않습니다. 예를 들어 나는이 일을하고 싶습니다 :

var (c, d) = (3, 4)
(c, d) = (5, 6)

나는 여러 변수 할당에 C와 D를 다시 사용하고 싶습니다. 이것이 가능한가?

해결법

  1. ==============================

    1.이것은 "여러 변수 할당"단순히 아니라, 완전히 기능을 갖춘 패턴 매칭입니다!

    이것은 "여러 변수 할당"단순히 아니라, 완전히 기능을 갖춘 패턴 매칭입니다!

    다음 그래서 모두 유효합니다 :

    val (a, b) = (1, 2)
    val Array(a, b) = Array(1, 2)
    val h :: t = List(1, 2)
    val List(a, Some(b)) = List(1, Option(2))
    

    이 새로운 이름으로 그 부분 패턴 매칭 작은 부분으로,이 드 구조를 것 뭔가를 작동하는 방식이며, 바인드. 지정된대로, 패턴 매칭을 참조 기존 사전에 결합하지 않을 것이다, 당신이 직접해야 할 것입니다.

    var x: Int = _
    var y: Int = _
    
    val (a, b) = (1, 2)
    x = a
    y = b
    
    // or
    
    (1,2) match {
      case (a,b) => x = a; y = b
      case _ =>
    }
    
  2. ==============================

    2.나는이 가능 당신이 원하는 생각하지 않는다, 그러나 당신은 "마법의"업데이트 방법과 매우 유사 뭔가를 얻을 수 있습니다.

    나는이 가능 당신이 원하는 생각하지 않는다, 그러나 당신은 "마법의"업데이트 방법과 매우 유사 뭔가를 얻을 수 있습니다.

    case class P(var x:Int, var y:Int) {
      def update(xy:(Int, Int)) {
        x = xy._1
        y = xy._2
      }
    }
    
    val p = P(1,2)
    p() = (3,4)
    
  3. from https://stackoverflow.com/questions/6196678/is-it-possible-to-have-tuple-assignment-to-variables-in-scala by cc-by-sa and MIT license