Swift의 가변 매개 변수 함수 소개

2322 단어
가변 매개 변수 함수는 임의의 여러 매개 변수를 받아들일 수 있는 함수를 가리킨다. 우리가 가장 잘 아는 것은 NSString의 -stringWithFormat: 방법일 것이다.Objective-C에서 이 방법을 사용하여 문자열을 작성하는 방법은 다음과 같습니다.
 
  
NSString *name = @"Tom";
NSDate *date = [NSDate date];
NSString *string = [NSString stringWithFormat:
                @"Hello %@. Date: %@", name, date];

이 방법의 매개 변수는 임의로 변화할 수 있습니다. 매개 변수의 첫 번째 항목은 포맷된 문자열이고, 뒤의 매개 변수는 모두 첫 번째 매개 변수에 빈칸을 채웁니다.여기서 우리는 더 이상 Objective-C에서 변수 함수의 쓰기를 상세하게 설명하지 않는다(어쨌든 이것은 Swift의 책이기 때문에). 그러나 나는 절대 다수의 Objective-C 경험이 있는 독자들도 자료를 열람하지 않는 전제에서 변수 함수를 받아들이는 함수를 정확하게 쓰기 어렵다고 믿는다.
그러나 이 모든 것은 스위프트에서 전대미문의 간소화를 얻었다.이제 가변 매개 변수를 쓰는 함수는 매개 변수를 설명할 때 형식 뒤에... 을 붙이기만 하면 됩니다.됐어요.예를 들어 다음과 같이 가변 매개변수를 적용하는 Int 누적 함수를 설명합니다.
 
  
func sum(input: Int...) -> Int {
    //...
}

입력한 input은 함수체 내부에서 수조 [Int]로 사용되며, 위의 방법을 완성합시다.물론 전통적인 포...in은 누적되었지만 여기서 우리는 더욱 스위프트해 보이는 방식을 선택했다.
 
  
func sum(input: Int...) -> Int {
    return input.reduce(0, combine: +)
}

println(sum(1,2,3,4,5))
// :15


가변 매개변수를 사용할 때 주의해야 할 것은 가변 매개변수는 메서드의 마지막 매개변수로만 사용할 수 있으며 먼저 가변 매개변수를 선언한 다음 다른 매개변수를 선언할 수는 없다는 것입니다.이것은 컴파일러가 입력한 매개 변수를 어디에서 끊어야 할지 모르기 때문에 이해하기 쉽다.또한 한 방법에서 최대 한 개의 가변 매개 변수만 있을 수 있다.
비교적 괴로운 제한은 가변 매개 변수는 반드시 같은 유형이어야 한다는 것이다. 여러 종류의 매개 변수를 동시에 전달하려면 약간의 변통이 필요하다.예를 들어 처음에 언급한 -stringWithFormat: 방법.가변 매개변수 목록의 첫 번째 요소는 서식 적용을 기다리는 문자열로, Swift에서는 스트링 유형에 해당하고 나머지 매개변수는 서식 적용 기준에 해당하는 임의의 유형일 수 있습니다.매개변수 유형으로 Any를 사용한 다음 수신된 배열의 첫 번째 요소를 특수 처리하는 것이 해결책입니다.하지만 Swift가 밑줄을 사용하도록 제공했기 때문에매개 변수의 외부 탭으로 호출할 때 매개 변수의 이름을 추가할 필요가 없습니다.우리는 이 특성을 이용할 수 있다. 성명 방법은 첫 번째 매개 변수를 문자열로 지정한 다음에 익명의 매개 변수 목록과 연결하는 것이다. 이렇게 하면 쓸 때 모든 매개 변수가 같은 매개 변수 목록에서 처리되는 것 같아서 훨씬 보기 좋을 것이다.예를 들어 Swift의 NSString 포맷 선언은 다음과 같이 처리됩니다.
 
  
extension NSString {
    convenience init(format: NSString, _ args: CVarArgType...)
    //...
}

Objective-C에서 호출할 때와 거의 같아서 매우 편리합니다.
 
  
let name = "Tom"
let date = NSDate()
let string = NSString(format: "Hello %@. Date: %@", name, date)

좋은 웹페이지 즐겨찾기