Swift의 가변 매개 변수 함수 소개
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)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.