복붙노트

[SCALA] 스칼라에서 어떻게 튜플 값을 할당 할 수 있습니다?

SCALA

스칼라에서 어떻게 튜플 값을 할당 할 수 있습니다?

나는 다음과 같은 일을 할 노력하고있어

var tuple = (1, "test")
tuple._2 = "new"

그러나이는 발에 대한 불평 컴파일되지 않습니다

해결법

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

    1.당신은 튜플 값을 다시 할당 할 수 없습니다. 그들은 의도적으로 불변 위치 : 당신이 튜플을 만든 후에, 당신은 절대 변하지 않을 것이라고 확신 할 수 있습니다. 이것은 올바른 코드를 작성하기위한 매우 유용합니다!

    당신은 튜플 값을 다시 할당 할 수 없습니다. 그들은 의도적으로 불변 위치 : 당신이 튜플을 만든 후에, 당신은 절대 변하지 않을 것이라고 확신 할 수 있습니다. 이것은 올바른 코드를 작성하기위한 매우 유용합니다!

    하지만 당신은 다른 튜플을 어떻게해야할까요? 복사 방법이 들어오는 곳이다 :

    val tuple = (1, "test")
    val another = tuple.copy(_2 = "new")
    

    또는 당신은 정말 튜플을 포함하는 VAR를 사용하려면 :

    var tuple = (1, "test")
    tuple = tuple.copy(_2 = "new")
    

    당신이 정말로, 정말로 값을 개별적으로 변경하려는 경우 (당신이 그것을 필요로 할 때 당신이 튜플을 얻을 수 있도록 아마 암시 적 변환과) 다른 방법으로, 당신은 대신에 케이스 클래스를 사용할 수 있습니다 :

    case class Doublet[A,B](var _1: A, var _2: B) {}
    implicit def doublet_to_tuple[A,B](db: Doublet[A,B]) = (db._1, db._2)
    val doublet = Doublet(1, "test")
    doublet._2 = "new"
    
  2. ==============================

    2.당신은 당신이 VAR 회원, 등으로 케이스 클래스에서 수정해야하는 구성 요소를 래퍼 수 있습니다 :

    당신은 당신이 VAR 회원, 등으로 케이스 클래스에서 수정해야하는 구성 요소를 래퍼 수 있습니다 :

    case class Ref[A](var value: A)
    
    var tuple = (Ref(1), "test")
    tuple._1.value = 2
    println(tuple._1.value) // -> 2
    
  3. from https://stackoverflow.com/questions/7142838/in-scala-how-can-i-reassign-tuple-values by cc-by-sa and MIT license