[kotlin] 코 틀린의 Val and Var

코 틀린 var과 의 차이점은 무엇입니까 val?

나는이 링크를 갔다 :

https://kotlinlang.org/docs/reference/properties.html

이 링크에 명시된 바와 같이 :

읽기 전용 속성 선언의 전체 구문은 두 가지면에서 변경 가능한 것과 다릅니다. var 대신 val로 시작하고 setter를 허용하지 않습니다.

그러나 바로 setter를 사용하는 예제가 있습니다.

fun copyAddress(address: Address): Address {
    val result = Address() // there's no 'new' keyword in Kotlin
    result.name = address.name // accessors are called
    result.street = address.street
    // ...
    return result
}

사이의 정확한 차이는 무엇 varval?

왜 둘 다 필요합니까?

이것은 Kotlin변수와 중복되지 않으며 Java와 다릅니다. var 대 val? 일반적으로가 아니라 문서의 특정 예제와 관련된 의심에 대해 묻고 있습니다.



답변

코드에서 result변경되지 않고 var속성이 변경됩니다. 아래의 의견을 참조하십시오.

fun copyAddress(address: Address): Address {
    val result = Address() // result is read only
    result.name = address.name // but not their properties.
    result.street = address.street
    // ...
    return result
}

valfinaljava 의 수정 자 와 동일합니다 . 아시다시피 final변수에 다시 할당 할 수는 없지만 속성을 변경할 수 있습니다.


답변

val그리고 var둘 다 변수를 선언하는 데 사용됩니다.

var일반 변수와 유사 하며 kotlin 에서 가변 변수라고하며 여러 번 할당 할 수 있습니다.

valFinal 변수와 유사 하며 kotlin 에서는 불변으로 알려져 있으며 한 번만 초기화 할 수 있습니다.

무엇 자세한 내용 valvar아래 링크를 참조하시기 바랍니다

http://blog.danlew.net/2017/05/30/mutable-vals-in-kotlin/


답변

var로 정의 된 변수 는 변경 가능 (읽기 및 쓰기)

val로 정의 된 변수 는 변경할 수 없습니다 (읽기 전용)

Kotlin은 findViewById를 제거하고 android studio에서 setOnClickListener의 코드를 줄일 수 있습니다. 전체 참조 : Kotlin의 멋진 기능

변경 가능한 변수의 값은 언제든지 변경할 수 있지만 변경 불가능한 변수의 값은 변경할 수 없습니다.

var와 where val을 어디에서 사용해야합니까?

값이 자주 바뀌는 var를 사용하십시오. 예를 들어 안드로이드 장치의 위치를 ​​가져 오는 동안

var integerVariable : Int? = null

전체 클래스에서 가치에 변화가없는 곳에 val을 사용하십시오. 예를 들어 프로그래밍 방식으로 텍스트보기 또는 버튼의 텍스트를 설정하려고합니다.

val stringVariables : String = "Button's Constant or final Text"


답변

val최종 변수를 선언하는 데 사용합니다. val변수의 특성

  1. 초기화해야합니다
  2. 값을 변경하거나 재 할당 할 수 없습니다
    여기에 이미지 설명을 입력하십시오

var 일반적인 변수입니다

  1. lateinit수정자를 사용하여 나중에 초기화 할 수 있습니다

    [ lateinit전역 변수에도 사용합니다. 지역 변수에는 사용할 수 없습니다]

  2. 값을 변경하거나 재 할당 할 수는 있지만 전역 범위에서는 할 수 없습니다

여기에 이미지 설명을 입력하십시오

valin kotlinfinal키워드 와 같습니다 . java


답변

간단히 var (변경 가능) 및 val (Java (최종 수정 자)와 같은 변경 불가능한 값)

var x:Int=3
x *= x

//gives compilation error (val cannot be re-assigned)
val y: Int = 6
y*=y


답변

val은 immutable이며 var은 mutableKotlin에 있습니다.


답변

단순히 Val을 Java의 최종 변수처럼 생각하십시오.