OC 中不固定參數(shù)函數(shù), 最后一個參數(shù)后面的類型都是和最后那個參數(shù)的類型相同
//這個方法中的,就是使用了不固定參數(shù)
NSString *str = [NSString stringWithFormat:(nonnull NSString *), ...];
//不固定參數(shù)的方法定義
- (void)method:(id)param1 param2:(NSNumber*)param2,...;
//不固定參數(shù)的方法實現(xiàn)
- (void)method:(id)param1 param2:(NSNumber*)param2,...{
va_listap;
va_start(ap, param2);
//定義一個參數(shù)數(shù)組
NSMutableArray *arr = [NSMutableArray arrayWithCapacity:10];
//如果param2參數(shù)本身為空季率,則不去解析不定形參數(shù)部分
if(param2 !=nil) {
[arr addObject:param2];
NSNumber*num;
do{
num =va_arg(ap,NSNumber*);
if(num !=nil){
[arr addObject:num];
}
}while(num !=nil);
}
va_end(ap);
//數(shù)組中已經(jīng)添加了所有不定性參數(shù)斟薇,也可能是空數(shù)組
// ...
}
Swift 更加簡單
在方法中被當做數(shù)組來處理
//可變參數(shù)的方法
func sum(input:Int...) ->Int{
return input.reduce(0, +)
//??? return input.reduce(0, { (result, anotherValue) -> Int in
//??????? return result - anotherValue;
//??? })
}
print(sum(input:1,2,3,4,5))//? 15
限制還是有的卤唉,
和 oc 一樣硅卢, 只能有一個參數(shù)是個數(shù)可變類型的计盒, 并且類型是一樣的
但是 swift 可以不像 oc 那樣可變參數(shù)必須是最后一個參數(shù)渴频,
swift 的可變參數(shù)可以是 任意位置的,