从斯坦福公开课拿过来的demo,这里会报错,函数名相同,参数不同,demo上面的代码一样的但是能运行,我这里就会报函数名和之前的冲突了,我用的是xcode6.3正式版,课上老师用的是6.1版本。 func performOperation (operation: (Double,Double) -> Double) {
if operandStack.count >= 2 {
displayValue = operation(operandStack.removeLast(), operandStack.removeLast())
enter()
}
} func performOperation (operation: (Double) -> Double) {
if operandStack.count >= 1 {
displayValue = operation(operandStack.removeLast())
enter()
}
}
if operandStack.count >= 2 {
displayValue = operation(operandStack.removeLast(), operandStack.removeLast())
enter()
}
} func performOperation (operation: (Double) -> Double) {
if operandStack.count >= 1 {
displayValue = operation(operandStack.removeLast())
enter()
}
}
if operandStack.count >= 2 {
displayValue = operation(operandStack.removeLast(), operandStack.removeLast())
enter()
}
} func performOperation (operation: Double -> Double) {
if operandStack.count >= 1 {
displayValue = operation(operandStack.removeLast())
enter()
}
}
我猜你的这个类是继承自 NSObject 的,在 Swift 1.2里,Swift对 Objective-C 的兼容性更好,而 Objective-C 是不支持重载的,所以如果你的 Swift 类有可能和 OC 冲突的话,编译器是会发出警告的,下面有两个例子:class MyObject: NSObject {
func performOperation (operation: (Double,Double) -> Double) {
}
func performOperation (operation: Double -> Double) {
}
}
class MyObject {
func performOperation (operation: (Double,Double) -> Double) {
}
func performOperation (operation: Double -> Double) {
}
}其中,继承自 NSObject的类会报错,因为你继承自 NSObject 类,表示你兼容 Objective-C。
func test(msg:String) {
/////.....
}
////函数重载
func test(#msg:String) {
//////.....
}
如上。