static_get 함수 설명 및 활용 예제
static_get
함수는 주어진 함수나 구조체에 대한 정적 구조체를 반환합니다. 구조체가 전달되면 반환 값은 구조체 자체에 따라 달라집니다. 아래는 각 경우에 대한 설명입니다.
경우 | 설명 |
---|---|
메서드 | 메서드 뒤에 있는 함수의 정적 구조체를 반환하며, 메서드 구조체 자체는 반환하지 않습니다. (메서드는 구조체로 저장됩니다.) |
생성자에서 생성된 구조체 | 사용된 생성자의 정적 구조체를 반환합니다. (생성 후 static_set 으로 변경된 경우 다른 구조체를 반환할 수 있습니다.) |
정적 구조체 | 정적 체인의 부모 정적 구조체를 반환합니다. |
다른 구조체 | 이 구조체의 "부모" 구조체를 반환하여 구조체를 "루트" 구조체에 연결합니다. |
루트 구조체 | undefined 를 반환합니다. |
문법
static_get(struct_or_func_name);
인수 설명
인수 | 타입 | 설명 |
---|---|---|
struct_or_func_name | Struct, Function 또는 Method | 정적 구조체를 가져올 구조체, 함수 또는 메서드 |
반환 값
- 구조체 또는 루트 구조체의 경우
undefined
를 반환합니다.
활용 예제
예제 1: 정적 변수 사용
function counter() {
static count = 0;
return count++;
}
repeat (10) {
counter();
}
// counter()의 정적 구조체 가져오기
var _static_counter = static_get(counter);
// 두 변수 모두 동일한 값을 읽습니다.
show_debug_message(counter.count); // 10
show_debug_message(_static_counter.count); // 10
위 코드는 counter()
라는 함수를 생성하고 정적 변수를 사용합니다. 이 함수는 반복적으로 호출되어 정적 변수의 값이 증가합니다. 그런 다음 해당 함수의 정적 구조체를 반환하여 변수에 저장하고, 두 가지 방법으로 정적 변수를 출력합니다.
예제 2: 정적 체인에서 올라가기
function item() constructor {
static hello = function() {
show_debug_message("Hello World!");
}
}
function potion() : item() constructor {}
my_potion = new potion();
var _static_potion = static_get(my_potion);
var _static_parent = static_get(_static_potion);
_static_parent.hello();
위 코드는 두 개의 생성자를 생성합니다: 부모 생성자 item
과 자식 생성자 potion
. 새로운 potion
을 생성하고 이를 변수에 저장한 후, static_get
을 호출하여 my_potion
의 정적 구조체를 가져옵니다. 반환된 정적 구조체는 정적 체인의 일부이며, 이후의 static_get
호출은 정적 체인에서 위로 올라갑니다. 마지막으로 부모 구조체의 hello
메서드를 호출합니다.