선택적 인자

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