Swift Methoden
Swift ist eine Funktion des Verfahrens mit bestimmten Typen zugeordnet
In Objective-C, sind Klassen die einzigen Typ definierten Methoden. Aber Swift, Sie können nicht nur wählen, ob Sie eine Klasse / Struktur / Enumeration zu definieren, aber auch flexibel in der Art (Klasse / Struktur / enum), die Sie auf der Definition Methode erstellen.
Beispiel Methods
In Swift Sprache gehört eine Instanzmethode zu einer bestimmten Klasse, eine Struktur oder Aufzählungstyp-Instanzen.
Instance-Verfahren bietet die folgenden Methoden:
Sie können Instanzeigenschaften zugreifen und diese ändern
Beispiel Bereitstellung von objektbezogenen Funktionen
Beispiele von Verfahren zu schreiben um sie zwischen den Arten von Klammern gehört ({}).
Beispiele von impliziten Verfahren können alle Methoden zuzugreifen und Eigenschaften anderer Instanzen des Typs, zu dem sie gehört.
Beispiele von Verfahren kann nur eine bestimmte Instanz der Klasse aufgerufen werden, zu dem sie gehört.
Instanz Methode kann nicht auf die vorhandene Instanz getrennt werden aufgerufen.
Grammatik
func funcname(Parameters) -> returntype { Statement1 Statement2 …… Statement N return parameters }
Beispiele
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)
Die obige Programmausführung Ausgabe ist:
6 0
Zähler-Klasse definiert drei Instanzmethoden:
-
increment
so daß der Zähler um eins inkrementiert wird; -
incrementBy(amount: Int)
machen Zähler um einen bestimmten ganzzahligen Wert erhöht wird; -
reset
der Zähler auf 0 zurückgesetzt wird.
Counter
Diese Klasse deklariert ebenfalls eine variable Attribut count
, verwenden Sie es den Überblick über den aktuellen Zählerwert zu halten.
Lokale Parametername und der Name des Verfahrens werden die externen Parameter
Swift-Funktionsparameter können beide haben einen lokalen Namen (in den Körper der Funktion intern verwendet) und einen externen Namen (verwendet, wenn Funktionen aufrufen
Swift Methoden und Objective-C-Methode sehr ähnlich. Wie in Objective-C, das gleiche wie der Name des Swift in dem Verfahren in der Regel eine Präposition zeigt auf den ersten Parameter-Methode, beispielsweise: mit, zum, durch, und so weiter.
Swift Standard nur auf das Verfahren des ersten Parameters der Name eines lokalen Parametername, der Standard zugleich auf die zweite und die folgenden globalen Parametername Parameternamen.
Die folgenden Beispiele 'No1' deklariert lokal im Parameternamen in den schnellen. 'No2' für globale Erklärungen und über ein externes Programm aufgerufen.
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)
Die obige Programmausführung Ausgabe ist:
600 320 3666
Ob externe Name Einstellungen zur Verfügung zu stellen
Wir zwingen, das erste Argument einen externen Namen auf den Namen des lokalen Namen als externe Nutzung (Swift 2.0, bevor Sie das # -Zeichen) hinzuzufügen.
Stattdessen können wir es verwenden, auch (_) unterstreicht die zweite und die folgenden Argumente festlegen keinen externen Namen angeben.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)
Die obige Programmausführung Ausgabe ist:
2400 500 45000
Selbst Immobilien
Jede Instanz des Typs hat eine Eigenschaft implizit Selbst genannt, selbst genau die gleiche wie die Instanz selbst.
Sie können diese impliziten Selbst eine Eigenschaft in einer Instanz-Methodeninstanz verwenden, um die aktuelle Instanz zu verweisen.
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()
Die obige Programmausführung Ausgabe ist:
Self 内: 900 Self 内: 1500 结果为: 880 结果为: 850 结果为: 1480 结果为: 1450
Ändern Sie den Wert Typ-Instanz-Methode
Swift Sprachstrukturen und Aufzählungen sind Werttypen. Im Allgemeinen kann die Art des Wertes der Immobilie nicht in seiner Instanzmethoden modifiziert werden.
Aber wenn Sie wirklich die Struktur oder die aufgezählten Eigenschaft in einer bestimmten Art und Weise ändern müssen, können Sie die Variation wählen (mutiert) die Methode, dann kann das Verfahren die Eigenschaften aus der internen Verfahren zu ändern, alle Änderungen, und es tut am Ende des Verfahrens wird es in der ursprünglichen Struktur gelassen werden.
Das Verfahren kann es auch eine neue Instanz dieser neuen Instanz impliziten Selbsteigenschaftszuweisung geben die ursprüngliche Instanz mit der Methode zu ersetzen.
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)
Die obige Programmausführung Ausgabe ist:
9 15 270 450 81000 135000
In der Prozessvariablen selbst zugewiesen
Variable Methode können Attribute zuweisen impliziert selbst eine neue Instanz.
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)
Die obige Programmausführung Ausgabe ist:
39 65
Typ Methoden
Instanzmethode ist eine Methode eine Instanz des Typs aufgerufen wird, können Sie auch die Art der Methode nennt sich definieren, wird diese Methode Typ-Methode aufgerufen.
Statement Struktur und Aufzählungstyp Verfahren vor func Schlüsselwort-Methode mit dem Schlüsselwort static. Klasse könnte das Schlüsselwort Klasse verwenden, um Unterklassen der übergeordneten Klasse Implementierung außer Kraft setzen können.
Die gleiche Art und Instanz-Methoden mit dem Punkt (.) Syntax aufzurufen.
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)
Die obige Programmausführung Ausgabe ist:
35 5