Metodi Swift
Swift è una funzione del metodo associato con alcuni tipi
In Objective-C, le classi sono i metodi solo tipo definito. Ma Swift, non solo si può scegliere se si vuole definire una classe / struct / enum, ma anche flessibile tipo (classe / struttura / enum) che si crea sul metodo di definizione.
Metodi di istanza
Nel linguaggio Swift, un metodo di istanza appartiene ad una classe particolare, una struttura o di casi tipo enumerato.
metodo di istanza fornisce i seguenti metodi:
È possibile accedere e modificare le proprietà di istanza
Esempio fornire funzioni relative agli oggetti
Esempi di metodi per scrivere intorno ad esso appartiene tra i tipi di parentesi graffe ({}).
Esempi di metodo implicito possono accedere a tutti i metodi e le proprietà di altre istanze del tipo a cui appartiene.
Esempi di metodi possono essere chiamati solo una particolare istanza della classe a cui appartiene.
metodo di istanza non può essere separato per l'istanza esistente è chiamato.
grammatica
func funcname(Parameters) -> returntype { Statement1 Statement2 …… Statement N return parameters }
Esempi
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)
L'output sopra l'esecuzione del programma è il seguente:
6 0
Classe contatore definisce tre metodi di istanza:
-
increment
in modo che il contatore viene incrementato di uno; -
incrementBy(amount: Int)
fare contatore da un valore intero specificato viene incrementato; -
reset
il contatore viene resettato a 0.
Counter
Questa classe dichiara anche un attributo variabile count
, usarlo per tenere traccia del valore corrente del contatore.
nome del parametro locale e il nome del metodo i parametri esterni
parametri della funzione Swift possono avere sia un nome locale (nel corpo della funzione utilizzata internamente) e un nome esterno (utilizzato al momento della chiamata funzioni
metodi Swift e il metodo Objective-C molto simile. Come in Objective-C, lo stesso come il nome del Swift nel metodo solitamente una preposizione punti al primo metodo, per esempio: con, per, da, e così via.
predefinito Swift soltanto il metodo del primo parametro il nome di un nome di parametro locale predefinito contemporaneamente al secondo e successivo nome del parametro nome parametro globale.
Gli esempi che seguono 'no1' dichiarato a livello locale nel nome del parametro nella rapida. 'No2' per le dichiarazioni globali e vi si accede attraverso un programma esterno.
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)
L'output sopra l'esecuzione del programma è il seguente:
600 320 3666
Sia per fornire le impostazioni di nome esterni
Noi costringiamo il primo argomento per aggiungere un nome esterno per il nome del nome locale come uso esterno (Swift 2.0 prima di utilizzare il segno #).
Invece, possiamo usarlo sottolinea anche (_) per impostare la seconda e le successive argomentazioni non forniscono un nome esterno.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)
L'output sopra l'esecuzione del programma è il seguente:
2400 500 45000
Struttura con
Ogni istanza del tipo ha una proprietà chiamata implicita sé, auto esattamente la stessa della istanza stessa.
È possibile utilizzare questo implicito sé una proprietà in un'istanza metodo di istanza per fare riferimento all'istanza corrente.
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()
L'output sopra l'esecuzione del programma è il seguente:
Self 内: 900 Self 内: 1500 结果为: 880 结果为: 850 结果为: 1480 结果为: 1450
Modificare il metodo di istanza tipo di valore
strutture linguistiche Swift, ed enumerazioni sono tipi di valore. In generale, il tipo del valore della proprietà non può essere modificato nei metodi di istanza.
Ma se si ha realmente bisogno di modificare la struttura o la proprietà enumerate in un modo specifico, è possibile scegliere la variazione (mutare) il metodo, il metodo può modificare le proprietà del metodo interno, eventuali modifiche, e lo fa alla fine del metodo sarà lasciato nella struttura originaria.
Il metodo può anche dare implicita assegnazione di proprietà di sé una nuova istanza di questa nuova istanza per sostituire l'istanza originale con metodo.
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)
L'output sopra l'esecuzione del programma è il seguente:
9 15 270 450 81000 135000
Nella variabile di processo assegnato all'auto
Metodo variabile può assegnare gli attributi di sé implicava una nuova istanza.
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)
L'output sopra l'esecuzione del programma è il seguente:
39 65
metodi di tipo
metodo di istanza è un metodo viene chiamato un'istanza del tipo, è anche possibile definire il tipo di metodo si chiama, questo metodo viene chiamato metodo tipo.
Struttura Normativa e metodo di tipo enumerato prima metodo func parola chiave con la parola chiave static. Class potrebbe utilizzare la classe parola chiave per consentire sottoclassi sostituiscono l'implementazione della classe genitore.
Lo stesso tipo di istanza e metodi che utilizzano il punto (.) Sintassi di invocare.
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)
L'output sopra l'esecuzione del programma è il seguente:
35 5