스위프트 공식문서의 functions에서 variadic parameters 부분을 참고하였다.
https://docs.swift.org/swift-book/LanguageGuide/Functions.html
variadic 라는 단어를 네이버 사전에서 찾아보았는데 이 단어 자체가 '임의의 여러 개의 argument를 취하는(taking many arguments)' 뜻인 것 같다. var...로 시작하는게 vary, various, variety 계열의 의미이겠거니 추측은 했지만.
https://en.dict.naver.com/#/search?query=Variadic&range=all
스위프트 함수에서 argument를 많이 전달할 수도 있다. 몇 개 전달할 지는 모르겠는데 한 개는 아니고 하여튼 여러 개 전달해야 할 때 사용할 수 있을 것 같다. ... 키워드를 사용하면 되고 이렇게 전달한 argument들은 해당 함수 내에서 배열처럼 다룰 수 있다.
func xxx(_ words: String..., num: Int) {
print("\(words.count) words") // 배열처럼 사용할 수 있기 때문에 count나 for문도 가능
print("phone number: \(num)")
}
xxx("a", "b", "c", 777)
... 뒤에 이어서 오는 argument의 argument label은 생략할 수 없다. 생략해 버리면 해당 함수를 호출할 때 argument를 전달하는 과정에서 헷갈리기 때문이다. 어차피 아래처럼 작성해도 컴파일 에러가 난다.
func xxx(_ words: String..., _ num: Int) {
print("\(words.count) words")
print("phone number: \(num)")
}
xxx("a", "b", "c", 777) // 777 는 두번째 argument인데 argument label이 없으니까 헷갈린다.
반응형
'swift & iOS > swift' 카테고리의 다른 글
[swift] 클로저 closure (feat. 함수) (0) | 2022.01.16 |
---|---|
[swift] 함수에 함수를 전달하거나 함수를 리턴하거나 (0) | 2022.01.16 |
[swift] guard...else... (0) | 2022.01.16 |
[swift] switch문 case에 조건 달기 (where 키워드) (0) | 2022.01.16 |
[Swift] 정수 나누기 (9 나누기 10을 했는데 0이 나오다) (0) | 2022.01.14 |