-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の値を追加するように、私たちが拡張で突然変異関数を呼び出すことができるかということです。
(+ 42 7)である。しかし、なぜあなたは、クラスのインスタンスを作成されていません。それを呼び出すには、単にこれを実行しますか? – WasimSafdar
これはIntの拡張であるため、クラス初期化子を呼び出す必要はありません – Feldur
'c'はIntのインスタンスです –