在OC中,当一个功能丰富的类对外暴露接口时,在.h文件中往往会提供一系列的API,参数由少到多。但是在.m文件的实现中,往往都是利用一个通用的实现。例如:
声明
+ (int)addNumA:(int)numA
numB:(int)numB;
+ (int)addNumA:(int)numA
numB:(int)numB
numC:(int)numC;
+ (int)addNumA:(int)numA
numB:(int)numB
numC:(int)numC
numD:(int)numD;
实现
+ (int)addNumA:(int)numA
numB:(int)numB {
return [self addNumA:numA numB:numB numC:0 numD:0];
}
+ (int)addNumA:(int)numA
numB:(int)numB
numC:(int)numC {
return [self addNumA:numA numB:numB numC:0 numD:0];
}
+ (int)addNumA:(int)numA
numB:(int)numB
numC:(int)numC
numD:(int)numD {
return numA + numB + numC + numD;
}
代码量很庞大,在swift中有更简单的方式来实现:
func add(numA:Int,numB:Int,numC:Int = 0,numD:Int = 0) -> Int {
return numA+numB+numC+numD
}
self.add(numA: 10, numB: 20, numC: 12, numD: 90)
self.add(numA: 20, numB: 50)
只需要在方法声明中按照上面的格式给出默认值就行。