2017-05-12 48 views
-1

当我将代码从swift 2.3转换为swift 3.0时,我有一个扩展实现问题。 问题陈述: -Swift 3.0扩展 - 方法没有在Child类中调用

1)每个继承类要求的协议实现

2)不能够调用它们在扩展已经实现的方法。

请检查以下代码以获取更多理解。

protocol MyExtension { 
     static func addTwoNumber(number1: Double, number2: Double) 
    } 

    extension MyExtension { 
     static func addTwoNumber(number1: Double, number2: Double) { 
      //implementation 
     } 

     static func subTractTwoNumbers(number1: Double, number2: Double) { 
     //implementation 
     } 
    } 

    internal class firstClass: MyExtension { 
     static func multiplyTwoNumbers(number1: Double, number2: Double) { 
     //implementation 
     // if I call subTractTwoNumbers in this class it is giving me an error  
      subTractTwoNumbers(10, 10) 
     //and asking me to implement protocol method as well ie 
     //static func addTwoNumber(number1: Double, number2: Double) 
     } 
    } 

请让我知道,我做错了什么。

+0

始终使用Xcode中建议使用属性和方法。写作func可能会有问题。 –

回答

0

替换此

subTractTwoNumbers(10, 10) 

随着

subTractTwoNumbers(number1: 10, number2: 10) // you must have to pass the argument lables name to call the function. 

如果你不想为一个参数一个参数的标签,写一个下划线(_)而不是一个明确的说法标签的该参数

static func subTractTwoNumbers(_: Double, _: Double) { 
//implementation 
} 

此外,你最后写了一个额外的花括号。在扩展

+0

感谢您的回复。上面的代码只是解释我的问题的原型。我遇到了问题。我的原型方法的返回类型是Request,我在扩展中实现的方法是DataRequest。这就是为什么它向我显示错误。 – Vandana

+0

此代码不会产生协议实现错误。很高兴听到你有这个问题。并始终放置相同的原型代码。 – Sahil

0

写入功能如下

extension MyExtension { 


    func addTwoNumber(number1: Double, number2: Double) { 
      //implementation 
     } 

     func subTractTwoNumbers(number1: Double, number2: Double) { 
     //implementation 
     } 
     }