2017-05-12 89 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 
     } 
     }