我是swift的新手并且在以下代码中出错。我有一个功能有两个不同的参数。 Xcode(版本6)在第二个定义上给出一个错误,参数作为一个函数,它取一个值。这是代码:
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()
}
}
答案 0 :(得分:1)
<强>更新强>
另一种解决方案是在方法定义(Source)之前添加>> gcf = 123;
>> gcf_bits = bitget(gcf, 8:-1:1, 'uint8')
gcf_bits =
0 1 1 1 1 0 1 1
:
private
原文答案:
看起来您的方法是在类中定义的,它继承自某个Objective-C类,例如:
private func performOperation(operation: (Double, Double) -> Double) {
if(operandStack.count >= 2){
displayValue = operation(operandStack.removeLast(), operandStack.removeLast())
enter()
}
}
private func performOperation(operation: Double -> Double){
if(operandStack.count >= 1){
displayValue = operation(operandStack.removeLast())
enter()
}
}
编译器会产生这样的错误:
使用Objective-C选择器'test:'与'冲突'的方法'test' 具有相同Objective-C选择器的先前声明。
要解决这个问题,你需要避免从Objective-C类继承:
class TestClass : NSObject {
func test(a : String) {}
func test(a : UInt) {}
}
此变体将正常工作。
问题是Objective-C不支持方法重载,但Swift确实如此。这就是为什么你需要创建纯粹的Swift类。