『ゼロから学ぶSwift』学習ノート(Day 50)――計算属性、方法を拡張


オリジナルの文章、転載を歓迎します.転載は明記してください:関東昇のブログ
計算プロパティは、インスタンス計算プロパティと静的計算プロパティを含む元のタイプに拡張できます.計算属性の定義を追加します.通常の計算属性の定義と同じです.
インスタンス計算プロパティの例:ネットワークプログラミング時にトラフィックを減らすために、サーバ側から返されるのは情報記述ではなく符号化であり、ローカルで符号化を記述情報に変換する.このため、次のようなIntタイプ拡張を定義します.
extension Int {              // Int 
    var errorMessage : String {   // 
        var errorStr =""
        switch (self) {    
        case -7:
            errorStr = " 。"
        case -6:
            errorStr = " 。"
        case -5:
            errorStr = " 。"
        case -4:
            errorStr = "ID 。"
        case -3:
            errorStr = " 。"
        case -2:
            errorStr = " 10 。"
        case -1:
            errorStr = " , http://51work6.com 。"
        default:
            errorStr = ""
        }              
        return errorStr
    }
}
let message =(-7).errorMessage      // -7 
print("Error Code : -7 , Error Message : \(message)")

注意-7全体がマイナス記号を含むのは完全なインスタンスであるため、そのプロパティを呼び出すときに-7を全体として括弧で囲む必要があります.ただし、7の場合は括弧は必要ありません.
次に、静的プロパティの例を示します.
struct Account {             // Account 
    var amount : Double = 0.0               // 
    var owner : String = ""                 // 
}
 
extension Account {          // Account 
    static var interestRate : Double {      //   
       return0.0668
    }
}
 
print(Account.interestRate)  // interestRate 

印刷出力interestRate属性、アクセス方式は他の静的計算属性と同様、「タイプ名」に「.」を付ける.に表示されます.
 
拡張メソッド
インスタンスメソッドと静的メソッドを含む元のタイプのメソッドを拡張できます.これらの追加メソッドの定義は、通常のメソッドの定義と同じです.
次に例を示します.
extension Double {// Double 
    static var interestRate : Double = 0.0668// 
    func interestBy1() -> Double {        
        return self * Double.interestRate  // 
    }
    mutating func interestBy2() {    // interestBy2
        self = self * Double.interestRate  
    }
    static func interestBy3(amount : Double) -> Double {  // interestBy3
        return interestRate * amount       // 
    }
}
 
let interest1 = (10_000.00).interestBy1()    // interestBy1 
print(" 1 :\(interest1)")
 
var interest2 = 10_000.00    // interestBy2 
interest2.interestBy2()  
print(" 2 :\(interest2)")
 
var interest3 = Double.interestBy3(10_000.00)    // interestBy3 
print(" 3 :\(interest3)")

コードself=self*Double.interestRateは、計算結果を現在のインスタンスselfに直接割り当てます.構造体と列挙タイプでselfに値を割り当てるとコンパイルエラーが発生し、メソッドの前にmutatingキーワードを付ける必要があり、これが変異メソッドであることを示します.
IntererestBy 1メソッドを呼び出して利息を計算し、そのインスタンスを呼び出す10_000.00、その戻り値はinterest 1定数に割り当てられ、これは一般的な呼び出しプロセスである.
IntererestBy 2メソッドを呼び出して利息を計算します.10_は使用できません.000.00インスタンス呼び出しではなく、Doubleタイプの変数interest 2が必要です.interestBy 2は、変数interest 2の値を直接変更する変異法であるため、interest 2.interestBy 2()文呼び出しが完了すると、変数interest 2の値が変わります.
金利を計算するためにinterestBy 3メソッドを呼び出します.これは静的メソッドで、呼び出すには「タイプ名」が必要です.「Double.」を選択してもアクセスできます.
 
关东升新浪微博@tony_へようこそ関東昇.智捷教室の微信公共プラットフォームに注目し、最新技術文章、図書、教程情報のより多くの逸品iOS、Cocos、モバイル設計課程を理解し、智捷教室の公式サイトに注目してください.http://www.zhijieketang.com智捷教室フォーラムのウェブサイト:http://51work6.com/forum.php