선택적 인자
You are viewing an old version of this entry, click here to see latest version.
몇몇 함수에서는 인자를 선택적으로 쓸 수 있습니다. 인자를 선택적으로 쓰는 방법은 인자의 이름 앞에 물음표(?)를 쓰는 것입니다 :
class Test { static function foo( x : Int, ?y : Int ) { trace(x+","+y); } static function main() { foo(1,2); // trace 1,2 foo(3); // trace 3,null } }
기본값
선택적 인자의 값을 지정하지 않으면, 인자의 기본값으로 `null`이 들어갑니다. 기본값으로 다른 값을 다음의 방법으로 지정해둘 수 있습니다.
static function foo( x : Int, ?y : Int = 5 ) { // ... }
데이터형을 추론하는 기능(type inference) 덕분에, 구문을 다음처럼 간결하게 쓸 수도 있습니다 :
static function foo( x : Int, y = 5 ) { // ... }
매개변수의 순서
선택적 매개변수를 사용할 떄에는, 함수의 매개변수 중에서 끝 부분에 쓰는 것을 권하지만, 앞이나 중간에 쓸 수도 있습니다.
또한 선택적 매개변수는 Haxe안에서 독립적입니다. 즉, 이전 매개변수를 제공하지 않아도, 선택적 매개변수를 사용할 수 있습니다 :
function foo( ?x : A, ?y : B ) { } foo(new A()); //foo(new A(),null)와 같습니다; foo(new B()); // foo(null, new B())와 같습니다; foo(); // foo(null,null)와 같습니다; foo(new C()); // 컴파일 시에 에러가 납니다. foo(new B(),new A()); // 에러 : 인자의 순서를 지켜야 합니다.
하지만 선택적 매개변수를 이렇게 사용하는 방식은, 높은 수준의 사용방식입니다.
Enum Values
선택적 인자의 기본값으로는 Enum의 값을 사용할 수 없습니다. 더 자세한 내용을 원하시면 Enums 문서를 참고해 주세요.
주의사항
=선택적 인자는 컴파일하는 시점과 관계가 깊습니다. 그래서 Dynamic 호출이나 Reflection 방식으로 호출했을 때에, 선택적 인자의 작동방식은 플랫폼에 따라서 달라질 수도 있습니다.
«« Properties | Conditional Compilation »»
version #14050, modified 2012-05-19 14:40:56 by nassol