2016-07-11 22 views
-1

「Swiftプログラミング言語(Swift 3 Beta)」から迅速かつ学習が迅速です。以下はプロトコル延長の本からの簡単な例ですプロトコルと拡張機能swift

protocol ExampleProtocol { 

    var simpleDescription: String {get} 

    mutating func adjust() 
} 

class SimpleClass: ExampleProtocol { 

    var simpleDescription: String = "A vert simple class." 

    var anotherProperty: Int = 69105 

    func adjust() { 

     simpleDescription += "Now 100% adjusted." 
    } 

} 

var a = SimpleClass() 

a.adjust() 

let aDescripition = a.simpleDescription 

struct SimpleStructure: ExampleProtocol { 

    var simpleDescription: String = "A simple structure" 

    mutating func adjust() { 

     simpleDescription += "(adjusted)" 
    } 

} 

var b = SimpleStructure() 

b.adjust() 

let bDescription = b.simpleDescription 

extension Int: ExampleProtocol{ 

    var simpleDescription : String { 

     return "The number \(self)" 
    } 

    mutating func adjust() { 

     self += 42 
    } 
} 

//var c = SimpleClass() 
//c.adjust() 
print(7.simpleDescription) 

最終印刷結果は「番号7 \ n」です。あなたがそれを見るとわかるように、私たちは自己に42を加える突然変異関数を持っています。私の質問は、どのようにして結果が+42の値を追加するように、私たちが拡張で突然変異関数を呼び出すことができるかということです。

答えて

0

私は、結果が+42の値を加算するように、拡張で突然変異関数を呼び出す方法?

加算値が+42になる関数は、adjust()関数です。

var c = 7 
c.adjust() 
print(c) 

cは49

+0

(+ 42 7)である。しかし、なぜあなたは、クラスのインスタンスを作成されていません。それを呼び出すには、単にこれを実行しますか? – WasimSafdar

+0

これはIntの拡張であるため、クラス初期化子を呼び出す必要はありません – Feldur

+0

'c'はIntのインスタンスです –

関連する問題