Feather 데이터 타입
Feather는 코드 작성 시 스마트 구문 검사를 제공하기 위해 데이터 타입을 사용합니다. 이를 통해 변수나 함수 매개변수에 잘못된 데이터 타입을 사용하지 않도록 보장합니다. 또한, JSDoc 주석을 사용하여 사용자 정의 스크립트 함수의 매개변수와 반환 값에 대한 데이터 타입을 지정할 수 있습니다.
JSDoc 태그
@param
및 @return
JSDoc 태그를 사용하여 다음과 같은 데이터 타입을 지정할 수 있습니다:
데이터 타입 | 설명 |
---|---|
Real | 실수 |
Bool | 불리언 |
String | 문자열 |
Array | 배열 (기본값) |
Pointer | 포인터 (기본값) |
Function | 함수 (기본값) |
Struct | 구조체 (기본값) |
Id | 객체 인스턴스, DS 리스트, DS 맵 등 |
Asset | 다양한 자산 (예: 애니메이션 곡선, 오디오 그룹 등) |
Constant | 상수 (예: 색상, 수평 정렬 등) |
Any | 모든 데이터 타입 |
참고: JSDoc 기본 타입은 대소문자를 구분하지 않지만, 지정자는 대소문자를 구분합니다. 예를 들어Id.DsList
는 유효하지만Id.dslist
는 유효하지 않습니다.
지정자
지정자는 기본 데이터 타입 뒤에 점(.)을 사용하여 추가됩니다. 예를 들어, Id.DsList
, Asset.GMObject
, Constant.Color
와 같은 형식입니다. 생성자는 Struct.{ConstructorName}
구문을 통해 지정됩니다.
function Person() constructor {}
/// @param {Struct.Person} _person
function do_business(_person) {}
컬렉션 타입
Array
및 Id.DsList
와 같은 데이터 구조는 여러 값을 포함할 수 있으며, 모든 내용에 대해 단일 데이터 타입을 지정할 수 있습니다. 이는 꺾쇠 괄호(<>)를 사용하여 타입에 추가함으로써 이루어집니다. 예를 들어, 문자열을 포함하는 배열은 Array<String>
으로 표현됩니다.
var myArray = Array<String>;
DS 리스트에 실수를 포함하는 배열은 Id.DsList<Array<Real>>
로 표현됩니다.
var myList = Id.DsList<Array<Real>>;
다중 타입
여러 데이터 타입을 나열할 수도 있으며, 쉼표로 구분합니다. 예를 들어 String
, Array<String>
, Id.Instance
, Asset.GMObject
등이 있습니다.
타입 검증
아래 표는 특정 타입의 값을 매개변수로 전달할 때 발생하는 결과를 보여줍니다.
타입 | 문자열 | 실수 | 불리언 | 배열 | 포인터 | 함수 | 구조체 |
---|---|---|---|---|---|---|---|
Undefined | 허용 | 오류 | 오류 | 오류 | 오류 | 오류 | 오류 |
String | 오류 | 허용 | 허용 | 오류 | 오류 | 경고 | 경고 |
Real | 오류 | 오류 | 허용 | 허용 | 오류 | 오류 | 오류 |
Bool | 오류 | 오류 | 오류 | 허용 | 오류 | 오류 | 오류 |
Array | 오류 | 오류 | 오류 | 오류 | 허용 | 오류 | 오류 |
Pointer | 오류 | 오류 | 오류 | 오류 | 오류 | 허용 | 오류 |
Function | 오류 | 오류 | 오류 | 오류 | 오류 | 오류 | 허용 |
Struct | 오류 | 오류 | 오류 | 오류 | 오류 | 오류 | 오류 |
활용 예제
다양한 데이터 타입을 활용하는 예제는 다음과 같습니다.
// 실수 타입 변수
var myReal = 3.14;
// 불리언 타입 변수
var isActive = true;
// 문자열 타입 변수
var myString = "Hello, World!";
// 배열 타입 변수
var myArray = Array<String>;
myArray.push("Item 1");
myArray.push("Item 2");
// DS 리스트 타입 변수
var myList = Id.DsList<Array<Real>>;
myList.push(1.0);
myList.push(2.0);
// 사용자 정의 구조체
function Person() constructor {
this.name = "";
this.age = 0;
}
// 구조체 타입 변수
var person = new Person();
person.name = "John";
person.age = 30;
이와 같은 방식으로 Feather의 데이터 타입을 활용하여 코드를 작성할 수 있습니다.