2015-01-29 3 views
1

Swift init에는 가변 인수가 있으므로 끝에 여러 개의 값을 보낼 수 있습니까?Swift 초기화 프로그램이 가변 인자를 가질 수 있습니까?

예를 들어, UIView 배열이있는 클래스를 만드는 것입니다. 다음과 같이 작동합니까? 이것을하는 것이 "합법적 인"것으로 간주됩니까?

class viewsContainer { 
    var myViews: [UIView] = [] 

    init(views: UIView...) { 
    for view in views { 
     myViews.append(view) 
    } 
    } 
} 
+5

시도해 보셨습니까? – zneak

+0

그냥 해봤는데 "합법적으로 보입니다". Variadic 매개 변수에 익숙하지 않으며 대형 프로젝트에서 사용하기 전에 매개 변수를 이해해야합니다. – TenaciousJay

답변

0

예, 유효한 방법이다 (나는.이 옵션의 경우 그냥 궁금, 난 그냥보기의 배열을 전달할 수) 알고 있지만 파단 겹쳐지지하기 위해 다른 프레임을 설정해야합니다.

0

완벽하게 합법적입니다. 하지만 단지 뷰 배열을 대신 전달하는 것이 가장 좋습니다 (따라서 myViews은 상수 일 수 있음). variadic 매개 변수를 사용하여 임시 배열을 만들고이를 개인 상수에 할당 할 수 있지만 ...

+0

myViews는 여전히 상수 일 수 있습니다. let myViews : [UIView]와 for 루프를 myViews = views로 바꿉니다. –

+0

가변 배열을 전달하는 것은 배열을 후행 매개 변수로 멀리 전달하는 것과 완전히 같습니다 피 호출자가 걱정되면 호출자 만 변경됩니다. variadic 접근법을 사용하는 유일한 단점은 호출자가 아마 다른 곳에서 발생하는 뷰 배열을 전달할 수 없다는 것입니다. –