English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
I metodi di Swift sono funzioni associate a tipi specifici
In Objective-C, la classe è l'unico tipo che può definire un metodo. Ma in Swift, oltre a poter scegliere se definire una classe/struttura/enumerazione, puoi definire metodi in modo flessibile sui tipi che crei (classe/struttura/enumerazione).
Nei linguaggi di programmazione Swift, i metodi di esempio appartengono ai metodi degli esempi di una classe, una struttura o un tipo enumerativo specifico.
I metodi di esempio forniscono i seguenti metodi:
Possono accedere e modificare gli attributi dell'esempio
Forniscono funzionalità correlate all'obiettivo dell'esempio
I metodi di esempio devono essere scritti tra le parentesi graffe ({}) del tipo di appartenenza.
I metodi di esempio possono accedere implicitamente a tutti gli altri metodi e attributi del tipo di appartenenza.
I metodi di esempio possono essere chiamati solo da un esempio specifico della classe di appartenenza.
I metodi di esempio non possono essere chiamati indipendentemente dagli esempi esistenti.
func funcname(Parameters) -> returntype { Stato1 Stato2 …… Stato N return parameters }
import Cocoa class Counter { var count = 0 func increment() { count += 1 } func incrementBy(amount: Int) { count += amount } func reset() { count = 0 } } // Il valore iniziale di conteggio è 0 let counter = Counter() // Il valore di conteggio è ora 1 counter.increment() // Il valore di conteggio è ora 6 counter.incrementBy(amount: 5) print(counter.count) // Il valore di conteggio è ora 0 counter.reset() print(counter.count)
以上程序执行輸出結果為:
6 0
La classe Counter definisce tre metodi di esempio:
Counter Questa classe dichiara anche un attributo variabile countper mantenere traccia del valore corrente del contatore.
I parametri dei funzioni in Swift possono avere contemporaneamente un nome locale (usato all'interno del corpo della funzione) e un nome esterno (usato durante la chiamata della funzione
I metodi in Swift sono estremamente simili ai metodi in Objective-C. Come in Objective-C, i nomi dei metodi in Swift sono solitamente preceduti da un preposizione che indica il primo parametro del metodo, come: con, per, da, ecc.
Swift predefinisce di dare un nome locale al primo parametro di un metodo; predefinisce di dare nomi globali ai parametri successivi e a due.
Nell'esempio seguente, 'no1' viene dichiarato come nome di parametro locale in Swift. 'no2' viene utilizzato per la dichiarazione globale e l'accesso da parte del 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(no1: 1800, no2: 3) counter.incrementBy(no1: 1600, no2: 5) counter.incrementBy(no1: 11000, no2: 3)
以上程序执行輸出結果為:
600 320 3666
Obblighiamo l'aggiunta di un nome esterno al primo parametro per utilizzare questo nome locale come nome esterno (prima di Swift 2.0 si usava il #).
Invece, possiamo anche utilizzare l'underscore (_ ) per impostare il nome esterno dei parametri successivi non forniti.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
Ogni esempio di tipo ha una proprietà implicita chiamata self, self è completamente equivalente all'istanza stessa.
Puoi utilizzare questa proprietà implicita self in un metodo di esempio per riferirti 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("Il risultato è: \(tot(c: 20))") print("Il risultato è: \(tot(c: 50))") } } let pri = calculations(a: 600, b: 300) let sum = calculations(a: 1200, b: 300) pri.result() sum.result()
以上程序执行輸出結果為:
Self interno: 900 Self interno: 1500 Il risultato è: 880 Il risultato è: 850 Il risultato è: 1480 Il risultato è: 1450
In Swift, le strutture e gli enumeratori sono tipi di valore. Di solito, le proprietà dei tipi di valore non possono essere modificate nei loro metodi di esempio.
Ma se hai davvero bisogno di modificare le proprietà di una struttura o di un enumeratore in un metodo specifico, puoi scegliere di mutare questo metodo, quindi il metodo può modificare i suoi attributi dall'interno; e qualsiasi modifica fatta verrà conservata nella struttura originale alla fine del metodo.
Il metodo può assegnare all'attributo implicito self un nuovo esempio completo, che sostituirà l'esempio originale alla fine del 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(res: 3) val.scaleBy(res: 30) val.scaleBy(res: 300)
以上程序执行輸出結果為:
9 15 270 450 81000 135000
I metodi mutabili possono assegnare all'attributo implicito self un nuovo esempio completo.
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(res: 13)
以上程序执行輸出結果為:
39 65
Il metodo di esempio è chiamato da un esempio di tipo, puoi anche definire un metodo chiamato dal tipo stesso, che si chiama metodo di tipo.
聲明結構體和枚舉的類型方法,在方法的func關鍵字之前加上關鍵字static。類可能會用關鍵字class來允許子類重寫父類的實現方法。
類型方法和示例方法一樣用點號(.)語法調用。
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(number: -35) let num = absno.abs(number: -5) print(no) print(num)
以上程序执行輸出結果為:
35 5