new 연산자와 구조체(Struct) 사용하기
new 연산자는 주어진 인수로 호출되는 함수를 사용하여 구조체를 생성하는 데 사용할 수 있습니다. 이 함수는 인수를 통해 변수를 구조체에 채워 넣고, 결과적으로 해당 구조체를 반환합니다. 이는 인스턴스의 생성 이벤트가 인스턴스의 초기 변수를 설정하는 것과 비슷합니다. 이 연산자를 사용하기 전에 주의할 점은, 제공된 함수가 생성자 함수로 플래그가 지정되어 있어야 한다는 것입니다. 그렇지 않으면 new 연산자는 구조체를 생성하지 않습니다.
구조체 생성 방법
다음 구문을 사용하여 구조체를 생성할 수 있습니다:
<변수> = new <함수>(<인수>, <인수>, ...);
함수와 함께 new 연산자를 사용하면 주어진 변수에 구조체 참조가 저장되며, 이를 통해 구조체와 함수 내에서 생성된 모든 변수에 접근할 수 있습니다.
생성자 함수 예제
아래는 구조체를 초기화하는 생성자 함수의 정의 예시입니다:
function init_struct(_a, _b, _c) constructor {
a = _a;
b = _b;
c = _c;
}
이 함수를 new 연산자와 함께 사용하여 구조체를 생성할 수 있습니다:
mystruct = new init_struct(10, 100, "Hello World");
여기서 mystruct는 생성된 구조체를 참조합니다.
주의사항
생성자로 플래그가 지정되지 않은 함수에서 new를 호출하면 런타임 예외가 발생합니다.
활용 및 응용 예제
여기서 몇 가지 추가적인 활용 및 응용 예제를 살펴보겠습니다.
| 구분 | 설명 | 코드 예제 |
|---|---|---|
| 기본 구조체 | 단순한 데이터를 저장하는 구조체 생성 | gml mystruct = new init_struct(1, 2, "데이터"); |
| 복잡한 구조체 | 객체를 여러 개 포함하는 구조체 생성/옵션 | gml function complex_struct(_data_array) constructor { data = _data_array; } mycomplex = new complex_struct([1, 2, 3]); |
| 메서드 포함 | 데이터와 관련된 기능(메서드)을 포함하는 구조체 | gml function advanced_struct(_x, _y) constructor { x = _x; y = _y; set_position = function(_new_x, _new_y) { x = _new_x; y = _new_y; }; } myadv = new advanced_struct(5, 10); myadv.set_position(15, 20); |
| 계산 함수 | 구조체 내에서 데이터를 처리하는 함수 | gml function calc_struct(_value1, _value2) constructor { value1 = _value1; value2 = _value2; sum = function() { return value1 + value2; }; } mycalc = new calc_struct(5, 10); total = mycalc.sum(); |
위와 같은 다양한 예제를 통해 구조체와 생성자 함수의 활용도를 높일 수 있습니다. 각 코드 예제에서 생성자는 주어진 인수를 통해 변수의 초기값을 설정하고, 이를 통해 유연하고 복잡한 데이터를 체계적으로 관리하는 데 도움을 줍니다.