Metode Swift
Swift adalah fungsi dari metode yang terkait dengan jenis tertentu
Di Objective-C, kelas adalah satu-satunya jenis didefinisikan metode. Tapi Swift, Anda tidak hanya dapat memilih apakah Anda ingin mendefinisikan kelas / struct / enum, tetapi juga fleksibel dalam jenis (kelas / struct / enum) yang Anda buat pada metode definisi.
Metode instance
Dalam bahasa Swift, metode contoh milik kelas tertentu, struktur atau jenis contoh disebutkan.
metode contoh memberikan metode berikut:
Anda dapat mengakses dan memodifikasi properti misalnya
Misalnya menyediakan fungsi yang berhubungan dengan objek
Contoh metode untuk menulis sekitar itu milik antara jenis kawat gigi ({}).
Contoh metode implisit dapat mengakses semua metode dan properti dari contoh-contoh lain dari jenis mana ia berasal.
Contoh metode hanya dapat disebut contoh khusus dari kelas mana ia berasal.
metode contoh tidak dapat dipisahkan dari contoh yang ada disebut.
tatabahasa
func funcname(Parameters) -> returntype { Statement1 Statement2 …… Statement N return parameters }
contoh
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)
Output di atas eksekusi program adalah:
6 0
kelas kontra mendefinisikan tiga metode misalnya:
-
increment
sehingga meja bertambah satu; -
incrementBy(amount: Int)
membuat kontra dengan nilai integer yang ditentukan bertambah; -
reset
counter reset ke 0.
Counter
Kelas ini juga menyatakan atribut variabel count
, menggunakannya untuk melacak nilai counter saat ini.
Nama parameter lokal dan nama metode parameter eksternal
parameter fungsi Swift dapat memiliki kedua nama lokal (dalam tubuh fungsi yang digunakan secara internal) dan nama eksternal (digunakan saat memanggil fungsi
metode cepat dan metode Objective-C sangat mirip. Seperti di Objective-C, sama dengan nama Swift dalam metode biasanya preposisi poin dengan metode parameter pertama, misalnya: dengan, untuk, oleh, dan sebagainya.
bawaan Swift hanya untuk metode parameter pertama nama nama parameter lokal; default pada saat yang sama untuk kedua dan selanjutnya global yang nama parameter nama parameter.
Contoh-contoh berikut 'no1' menyatakan secara lokal di nama parameter dalam derasnya. 'No2' untuk deklarasi global dan diakses melalui program eksternal.
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)
Output di atas eksekusi program adalah:
600 320 3666
Apakah untuk memberikan pengaturan nama eksternal
Kami memaksa argumen pertama untuk menambahkan nama eksternal untuk nama nama lokal sebagai penggunaan eksternal (Swift 2.0 sebelum menggunakan tanda #).
Sebaliknya, kita dapat menggunakannya juga menggarisbawahi (_) untuk mengatur argumen kedua dan selanjutnya tidak memberikan nama eksternal.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)
Output di atas eksekusi program adalah:
2400 500 45000
properti diri
Setiap contoh dari jenis memiliki sifat yang disebut implisit diri, diri persis sama dengan contoh sendiri.
Anda dapat menggunakan self implisit ini properti dalam contoh metode contoh untuk referensi contoh saat.
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()
Output di atas eksekusi program adalah:
Self 内: 900 Self 内: 1500 结果为: 880 结果为: 850 结果为: 1480 结果为: 1450
Mengubah jenis nilai metode contoh
struktur bahasa Swift, dan mantri adalah jenis nilai. Secara umum, jenis nilai properti tidak dapat diubah dalam metode instan nya.
Tetapi jika Anda benar-benar perlu untuk mengubah struktur atau properti disebutkan dengan cara tertentu, Anda dapat memilih variasi (bermutasi) metode, maka metode ini dapat mengubah sifat dari metode internal; perubahan, dan itu tidak pada akhir metode itu akan ditinggalkan dalam struktur asli.
Metode ini juga dapat memberikan tersirat tugas properti diri contoh baru dari contoh baru ini untuk menggantikan contoh asli dengan metode.
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)
Output di atas eksekusi program adalah:
9 15 270 450 81000 135000
Dalam variabel proses ditugaskan untuk diri
Metode variabel dapat menetapkan atribut diri tersirat contoh baru.
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)
Output di atas eksekusi program adalah:
39 65
metode Jenis
metode contoh adalah metode disebut sebuah contoh dari jenis, Anda juga dapat menentukan jenis metode menyebut dirinya, metode ini disebut metode Jenis.
Struktur pernyataan dan metode tipe enumerasi sebelum metode func kata kunci dengan kata kunci statis. Kelas mungkin menggunakan kata kunci class untuk memungkinkan subclass menimpa pelaksanaan kelas induk.
Jenis dan contoh yang sama metode menggunakan titik (.) Sintaks untuk memohon.
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)
Output di atas eksekusi program adalah:
35 5