5.9 var와 final
5.9 var와 final
var 키워드는 쉼표 ,로 구분된 여러 변수를 선언할 수 있게 해요. 각 변수는 유효한 식별자(identifier)를 가지며 선택적으로 할당 연산자 = 뒤에 값 할당을 가질 수 있어요. 변수는 명시적 타입 힌트도 가질 수 있습니다.
var a; // declare local `a`
var b:Int; // declare variable `b` of type Int
// declare variable `c`, initialized to value 1
var c = 1;
// declare an uninitialized variable `d`
// and variable `e` initialized to value 2
var d,e = 2;
지역 변수의 스코프 동작과 변수 섀도잉은 블록(Blocks)에서 설명합니다.
Haxe 4.0.0 이후 — Haxe 4에서 표현식 수준에 대체 키워드
final이 도입되었어요.var대신final로 선언된 변수는 값을 한 번만 할당할 수 있습니다.
class Main {
static public function main() {
final a = "hello";
var b = "world";
trace(a, b); // hello, world
b = "Haxe";
trace(a, b); // hello, Haxe
// the following line would cause a compilation error:
// a = "bye";
}
}
final은 배열이나 객체처럼 불변(immutable)이 아닌 타입에서는 의도한 효과가 없을 수 있음을 주목하는 것이 중요해요. 변수에 다른 객체가 할당될 수는 없지만, 그 객체의 내부 상태는 여전히 변경될 수 있으므로, final 변수의 값이 실제로 변하지 않는다는 보장은 제한적입니다.
출처: var and final
본문
var 선언
var로 쉼표 구분 여러 변수를 선언할 수 있어요. 각 변수는 식별자, 선택적 타입 힌트, 선택적 초기화 값을 가집니다. 타입 초기화 없이 선언하면 초기화되지 않은 변수가 됩니다.
final 선언
Haxe 4의 final은 var 대신 쓰여 한 번만 값이 할당될 수 있는 변수를 선언해요. final a = "hello"; 후에 a = "bye"는 컴파일 오류입니다.
final의 제한
final은 가리키는 객체를 바꿀 수 없게 하지만, 배열·객체의 내부 상태 변경은 막지 못해요.