5.10 지역 static 변수(Local static variables)

5.10 지역 static 변수(Local static variables)

Haxe 4.3.0 이후

함수 안의 static varstatic 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 변수에 할당된 초기 값(있으면)은 현재 함수의 인스턴스 변수나 인자를 참조해서는 안 됩니다.

출처: Local static variables

본문

지역 static 변수

static var/static final은 함수 내부에 선언되어 함수로 스코프가 제한되지만 한 번만 초기화되는 변수를 만들어요. 캐시나 메모이제이션에 유용합니다.

예제

getData()static var cache를 사용해 한 번만 slowOperation()을 호출하고 이후 결과를 재사용해요. 초기 값은 인스턴스 변수나 함수 인자를 참조할 수 없습니다.

더 알아보기