5.10 지역 static 변수(Local static variables)
5.10 지역 static 변수(Local static variables)
Haxe 4.3.0 이후
함수 안의 static var와 static final 선언은 함수로 스코프가 제한되지만(함수 밖에서 참조할 수 없음) 한 번만 초기화되는 변수를 만듭니다.
이것은 클래스 필드를 너무 많이 만들지 않고 함수의 캐시나 메모이제이션 패턴을 구현하는 데 사용할 수 있어요.
class Main {
static function getData() {
static var cache:Null<String> = null;
if (cache == null) {
cache = slowOperation();
}
return cache;
}
static function slowOperation() {
trace("performing slow operation...");
return "result";
}
static public function main() {
trace(getData()); // performing slow operation... result
trace(getData()); // result
}
}
static 클래스 변수(class variables)와 유사하게, 지역 static 변수에 할당된 초기 값(있으면)은 현재 함수의 인스턴스 변수나 인자를 참조해서는 안 됩니다.
본문
지역 static 변수
static var/static final은 함수 내부에 선언되어 함수로 스코프가 제한되지만 한 번만 초기화되는 변수를 만들어요. 캐시나 메모이제이션에 유용합니다.
예제
getData()는 static var cache를 사용해 한 번만 slowOperation()을 호출하고 이후 결과를 재사용해요. 초기 값은 인스턴스 변수나 함수 인자를 참조할 수 없습니다.