スウィフト方法
スウィフトは、特定のタイプに関連付けられたメソッドの関数であり、
Objective-Cで、クラスでは唯一のタイプ定義されたメソッドです。 しかしスウィフトは、あなただけでなく、クラス/構造体/列挙型を定義するかどうかを選択しますが、定義方法で作成したタイプ(クラス/構造体/列挙型)においても、柔軟にすることができます。
インスタンスメソッド
スウィフト言語では、インスタンスメソッドは、特定のクラス、構造体、または列挙型のインスタンスに属しています。
インスタンスメソッドは、次のメソッドを提供します。
あなたは、インスタンスのプロパティにアクセスして変更することができます
オブジェクト関連の機能を提供する例
それは中括弧({})の型の間に属し周りに書き込むための方法の例。
暗黙的な方法としては、すべてのメソッドと、それが属する種類の他のインスタンスのプロパティにアクセスすることができます。
方法の例には、それが属するクラスの特定のインスタンスと呼ぶことができます。
インスタンスメソッドは、既存のインスタンス上で分離することはできませんと呼ばれています。
文法
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
カウンタークラスは、次の3つのインスタンスメソッドを定義します。
-
increment
カウンタがインクリメントされるように。 -
incrementBy(amount: Int)
指定された整数値でカウンタがインクリメントされていることを確認。 -
reset
カウンタが0にリセットされます。
Counter
このクラスは、可変属性を宣言count
、現在のカウンタ値を追跡するためにそれを使用。
ローカルパラメータ名とメソッドの名前外部パラメータ
スウィフト関数のパラメータは、(内部で使用される関数の本体内の)ローカル名と関数を呼び出すときに使用される外部名(両方を持つことができます
スウィフトの方法と非常に類似したObjective-Cの方法。 、とのために、によって、およびように:最初のパラメータ法に通常前置詞ポイント、例えば方法でスウィフトの名前としてObjective-Cでは、同じように。
最初のパラメータだけの方法にスウィフトデフォルトのローカルパラメータ名の名前、二番目以降のグローバルパラメータ名パラメータ名まで同時にデフォルト。
次の例「NO1」は迅速にパラメータ名でローカルに宣言しました。 グローバル宣言のための「NO2の 'と外部プログラムを介してアクセスします。
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
外部名の設定を提供するかどうか
我々は、(#記号を使用する前に、スウィフト2.0)外用としてローカル名の名前に外部名を追加するために、最初の引数を強制します。
その代わりに、我々は二番目以降の引数は外部名を提供しない設定することもアンダースコア(_)を使用することができます。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)
上記プログラム実行出力は、次のとおりです。
2400 500 45000
自己プロパティ
タイプの各インスタンスは、暗黙的な自己、自己インスタンス自体とまったく同じというプロパティがあります。
あなたは、現在のインスタンスを参照するために、インスタンスメソッドインスタンスにこの暗黙の自己プロパティを使用することができます。
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
値型のインスタンスメソッドを変更します。
スウィフト言語構造、および列挙型は値型です。 一般的には、プロパティ値の型は、そのインスタンスメソッドで変更することはできません。
すべての変更、およびそれはありません。しかし、あなたは本当にあなたが変化(変異に)方法を選択することができ、この方法は、内部メソッドからプロパティを変更することができ、特定の方法で構造体や列挙型プロパティを変更する必要がある場合メソッドの最後には、元の構造のままになります。
この方法はまた、この方法で元のインスタンスを置き換えるために暗黙の自己プロパティの割り当てにそれにこの新しいインスタンスの新しいインスタンスを与えることができます。
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
自己に割り当てられたプロセス変数で
変数法は、自己が新しいインスタンスを暗示属性を割り当てることができます。
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
型のメソッド
インスタンスメソッドは、メソッドは、型のインスタンスと呼ばれているが、あなたはまた、この方法は、型のメソッドと呼ばれ、メソッドの型は自分自身を呼び出し定義することができます。
文の構造とstaticキーワードでfuncのキーワードメソッドの前に列挙型の方法。 クラスはサブクラスは親クラスの実装をオーバーライドできるようにするキーワードクラスを使用する場合があります。
ドットを使用して、同じタイプとインスタンスメソッド(。)構文を呼び出すため。
import Cocoa class Math { class func abs(number: Int) -> Int { if number < 0 { return (-number) } else { return number } } } struct absno { static func abs(number: Int) -> Int { if number < 0 { return (-number) } else { return number } } } let no = Math.abs(-35) let num = absno.abs(-5) print(no) print(num)
上記プログラム実行出力は、次のとおりです。
35 5