迅速な方法
Swift メソッドは特定の型に関連付けられた関数です
Objective-C では、メソッドを定義できる型はクラスだけです。しかし、Swift では、クラス/構造体/列挙体を定義するかどうかを選択できるだけでなく、作成した型 (クラス/構造体/列挙体) のメソッドを柔軟に定義することもできます。
インスタンス メソッド
Swift 言語では、インスタンス メソッドは、特定のクラス、構造体、または列挙型のインスタンスに属するメソッドです。
インスタンスメソッドは以下のメソッドを提供します:
インスタンスのプロパティにアクセスして変更することができます
インスタンスの目的に関連する関数を提供します
インスタンスメソッドは、中括弧({})で囲んで記述します間に属するタイプ。
インスタンス メソッドは、その型の他のすべてのインスタンス メソッドとプロパティに暗黙的にアクセスできます。
インスタンス メソッドは、それが属するクラスの特定のインスタンスによってのみ呼び出すことができます。
インスタンス メソッドは、既存のインスタンスから独立して呼び出すことはできません。
構文
func funcname(Parameters) -> returntype { Statement1 Statement2 …… Statement N return parameters }
インスタンス
import Cocoa class Counter { var count = 0 func increment() { count++ } func incrementBy(amount: Int) { count += amount } func reset() { count = 0 } } // 初始计数值是0 let counter = Counter() // 计数值现在是1 counter.increment() // 计数值现在是6 counter.incrementBy(5) print(counter.count) // 计数值现在是0 counter.reset() print(counter.count)
上記のプログラムの実行出力は次のとおりです:
6 0
Counter クラスは 3 つのインスタンス メソッドを定義します。
increment
はカウンターを 1 つインクリメントします。increment
让计数器按一递增;incrementBy(amount: Int)
让计数器按一个指定的整数值递增;reset
将计数器重置为0。
Counter
这个类还声明了一个可变属性count
incrementBy(amount: Int)
指定された整数値だけカウンタをインクリメントします。 reset
カウンタを 0 にリセットします。
Counter
このクラスは、現在のカウンター値を追跡するために使用される可変属性 count
も宣言します。
import Cocoa class division { var count: Int = 0 func incrementBy(no1: Int, no2: Int) { count = no1 / no2 print(count) } } let counter = division() counter.incrementBy(1800, no2: 3) counter.incrementBy(1600, no2: 5) counter.incrementBy(11000, no2: 3)
上記のプログラム実行の出力結果は次のとおりです:
600 320 3666
最初のパラメータに外部名を追加し、このローカル名を使用します。外部名 (Swift 2.0 より前) # 記号を使用します)
逆に、外部名を指定せずに 2 番目以降のパラメーターを設定することもできます。import Cocoa class multiplication { var count: Int = 0 func incrementBy(first no1: Int, no2: Int) { count = no1 * no2 print(count) } } let counter = multiplication() counter.incrementBy(first: 800, no2: 3) counter.incrementBy(first: 100, no2: 5) counter.incrementBy(first: 15000, no2: 3)
self 属性
型の各インスタンスには self という暗黙的な属性があり、これはインスタンス自体とまったく同じです。
この暗黙的な self 属性をインスタンス メソッドで使用して、現在のインスタンスを参照できます。
上記のプログラム実行の出力結果は次のとおりです。2400 500 45000
インスタンスメソッドの値型を変更する
Swift言語における構造体や列挙型は値型です。一般に、値型のプロパティは、そのインスタンス メソッド内で変更できません。
ただし、特定のメソッドの構造体または列挙のプロパティを変更する必要がある場合は、メソッドを変更することを選択できます。その後、メソッドはメソッド内からプロパティを変更でき、変更はそのまま残ります。メソッドの最後にある元の構造内。
メソッドは、暗黙的な self 属性に新しいインスタンスを割り当てることもできます。この新しいインスタンスは、メソッドの終了後に元のインスタンスを置き換えます。
import Cocoa class calculations { let a: Int let b: Int let res: Int init(a: Int, b: Int) { self.a = a self.b = b res = a + b print("Self 内: \(res)") } func tot(c: Int) -> Int { return res - c } func result() { print("结果为: \(tot(20))") print("结果为: \(tot(50))") } } let pri = calculations(a: 600, b: 300) let sum = calculations(a: 1200, b: 300) pri.result() sum.result()
上記のプログラムの実行出力は次のとおりです:
Self 内: 900 Self 内: 1500 结果为: 880 结果为: 850 结果为: 1480 结果为: 1450
変数メソッドでの self への値の代入
変数メソッドは、暗黙的な属性 self に新しいインスタンスを割り当てることができます。
import Cocoa struct area { var length = 1 var breadth = 1 func area() -> Int { return length * breadth } mutating func scaleBy(res: Int) { length *= res breadth *= res print(length) print(breadth) } } var val = area(length: 3, breadth: 5) val.scaleBy(3) val.scaleBy(30) val.scaleBy(300)
上記のプログラムの実行出力は次のとおりです。
9 15 270 450 81000 135000
型メソッド
インスタンス メソッドは、型のインスタンスによって呼び出されるメソッドです。このメソッドは、型自体によって呼び出されるメソッドを定義することもできます。タイプメソッド。
構造体と列挙型の型メソッドを宣言し、メソッドの func キーワードの前にキーワード static を追加します。クラスはキーワード class を使用して、サブクラスが親クラスの実装メソッドをオーバーライドできるようにすることができます。
Type メソッドは、インスタンス メソッドと同様にドット (.) 構文で呼び出されます。
import Cocoa struct area { var length = 1 var breadth = 1 func area() -> Int { return length * breadth } mutating func scaleBy(res: Int) { self.length *= res self.breadth *= res print(length) print(breadth) } } var val = area(length: 3, breadth: 5) val.scaleBy(13)
上記のプログラムの実行の出力結果は次のとおりです:
39 65