val과 var

Volc·2023년 3월 29일
0

Scala

목록 보기
2/9

Scala에서의 변수 정의

  • scala에서는 변수를 정의할 때 var와 val을 사용한다.

val

  • val로 선언한 경우 변경이 불가능하다.

    
    val array: Array[String] = new Array(5)
    
    array = new Array(2)  // 에러 발생
  • 변수가 힙에 할당되며 다른 값으로 재할당 할 수 없다.

  • 하지만 배열의 원소는 변경이 가능하다.

  • val은 반드시 선언 시 초기화 해야한다.

var

  • val과 다르게 재할당이 가능하지만 선언할 때 반드시 초기화해야 한다.

클래스 선언에서의 val과 var

class Person(val name: String, var age: Int)

val p = new Person("Lee", 29)

p.name = "yong"  	// 에러 발생

p.age = 30 	// 성공
  • 이름은 보통 불변이고 나이는 변하기 때문에 Person 클래스를 위와 같이 만들었다.
  • 버그 유형을 방지하기 위해 가능한 한 변경 불가능한 값을 사용하는 것이 좋다.
  • 사용중인 객체를 다른 누군가 변경해서 생기는 예기치 못한 유령 같은 원격 작용이 발생하는데 이런 버그는 공유된 변경 가능한 상태에의 접근을 동기화할 필요가 있는 다중 스레드 프로그램에 가장 치명적이며 불변 선언을 통해 이 문제를 방지할 수 있다.
profile
미래를 생각하는 개발자

0개의 댓글