메서드 호출 (method_call)
이 문서는 method_call
함수에 대해 설명합니다. 이 함수는 메서드를 호출하고, 배열 또는 배열의 범위에서 인수를 가져옵니다. array_args
매개변수는 선택 사항이며, 메서드가 인수를 필요로 하지 않는 경우 생략할 수 있습니다. 매개변수가 제공되면, offset
과 num_args
매개변수를 사용하여 요소의 범위를 선택적으로 지정할 수 있습니다. script_execute_ext
를 사용하면 메서드의 바인딩된 컨텍스트 대신 호출 인스턴스나 구조체의 컨텍스트에서 메서드를 호출할 수 있습니다.
문법
method_call(method, [array_args], [offset], [num_args]);
매개변수 설명
매개변수 | 유형 | 설명 |
---|---|---|
method | Method | 호출할 메서드 |
array_args | Array | 메서드에 전달할 인수를 포함하는 배열 |
offset | Real | 배열에서의 오프셋 또는 시작 인덱스. 이 배열 인덱스의 항목이 메서드의 첫 번째 인수입니다. 기본값은 0입니다. 음수 값을 설정하면 배열의 끝에서부터 계산됩니다. 시작 인덱스는 array_length(array_args) + offset 이 됩니다. |
num_args | Real | 전달할 인수의 수. 음수 값을 사용하면 배열을 역순으로 탐색합니다 (즉, 인덱스의 내림차순으로). |
반환값
메서드가 반환하는 값의 유형입니다.
예제
다음은 method_call
함수의 사용 예입니다:
struct_with_a_method = {
show_message: function(message) {
show_debug_message("The message is: {0}", message);
}
};
var _method = struct_with_a_method.show_message;
method_call(_method, ["Hello World!"]);
위 코드는 먼저 struct_with_a_method
라는 구조체를 정의하고, 이 구조체에는 show_message
라는 메서드가 포함되어 있습니다. 그 다음, 이 메서드는 임시 변수 _method
에 할당됩니다. 이후 method_call
을 사용하여 인수 배열을 전달하며, 이 배열에는 문자열 "Hello World!"가 포함되어 있습니다. show_message
함수는 show_debug_message
를 호출하여 "The message is: Hello World!"라는 메시지를 출력합니다.
활용 예제
- 다양한 인수 전달하기
gml var _method2 = struct_with_a_method.show_message; method_call(_method2, ["안녕하세요", "여러분!"]);
- 오프셋과 인수 수 지정하기
gml var args = ["첫 번째", "두 번째", "세 번째"]; method_call(_method, args, 1, 2); // "두 번째", "세 번째"를 전달
- 배열을 역순으로 탐색하기
gml var args2 = ["A", "B", "C", "D"]; method_call(_method, args2, -1, -2); // "D", "C"를 전달
- 인수가 없는 메서드 호출하기
gml struct_with_no_args = { greet: function() { show_debug_message("Hello!"); } }; method_call(struct_with_no_args.greet);
- 다양한 데이터 타입 전달하기
gml var mixed_args = [42, "Hello", true]; method_call(_method, mixed_args);