fungsi Swift
Fungsi Swift digunakan untuk menyelesaikan tugas tertentu blok kode yang terpisah.
Swift menggunakan sintaks bersatu untuk mengekspresikan sederhana fungsi C-gaya Objective-C pendekatan bahasa-gaya kompleks.
Deklarasi fungsi: memberitahu compiler nama fungsi, jenis, dan parameter kembali.
Definisi fungsi: Menyediakan fungsi entitas.
Fungsi Swift berisi jenis parameter dan jenis kembali:
definisi fungsi
fungsi Swift-didefinisikan menggunakanfunc kata kunci.
fungsi didefinisikan, Anda dapat menentukan satu atau lebih parameter input dan jenis nilai kembali.
Setiap fungsi memiliki nama fungsi untuk menjelaskan fungsinya. Nilai parameter dari nama fungsi dan jenis panggilan yang berfungsi. parameter fungsi transfer agar harus daftar parameter yang sama.
Urutan argumen berlalu dalam fungsi daftar parameter harus sama-> Setelah Anda menentukan jenis kembalinya fungsi.
tatabahasa
func funcname(形参) -> returntype { Statement1 Statement2 …… Statement N return parameters }
contoh
Di bawah kita mendefinisikan sebuah fungsi yang disebut fungsi w3big, parameter tipe data String, nilai kembali dari String:
import Cocoa func w3big(site: String) -> String { return site } print(w3big("www.w3big.com"))
Output di atas eksekusi program adalah:
www.w3big.com
fungsi panggilan
Kita bisa memanggil fungsi melalui nama fungsi dan parameter nilai yang sesuai dengan jenis fungsi transfer urutan parameter daftar parameter harus sama.
Di bawah kita mendefinisikan sebuah fungsi yang disebut fungsi w3big, situs parameter tipe data String, maka kita sebut argumen fungsi lulus harus dari jenis argumen String berlalu setelah fungsi tubuh akan langsung kembali jenis data yang dikembalikan String.
import Cocoa func w3big(site: String) -> String { return site } print(w3big("www.w3big.com"))
Output di atas eksekusi program adalah:
www.w3big.com
Argumen fungsi
Fungsi dapat menerima satu atau lebih parameter, kita juga bisa menggunakan tuple (tuple) melewati satu atau lebih parameter untuk fungsi:
import Cocoa func mult(no1: Int, no2: Int) -> Int { return no1*no2 } print(mult(2, no2:20)) print(mult(3, no2:15)) print(mult(4, no2:30))
Output di atas eksekusi program adalah:
40 45 120
Fungsi tanpa parameter
Kami dapat membuat fungsi tanpa parameter.
sintaks:
func funcname() -> datatype { return datatype }
contoh
import Cocoa func sitename() -> String { return "本教程" } print(sitename())
Output di atas eksekusi program adalah:
本教程
Tupel mengembalikan nilai sebagai fungsi
Fungsi nilai kembali jenis bisa string, integer, tipe floating-point.
Tuple mirip dengan array, perbedaannya adalah, elemen tupel dapat dari jenis apa pun, menggunakan tanda kurung.
Anda dapat memiliki beberapa jenis nilai sebagai nilai komposit kembali dari fungsi tuple (tuple).
Contoh berikut, definisi bernama Minmax (_ :) fungsi peran adalah untuk mengidentifikasi nilai minimum dan maksimum dalam array Int.
import Cocoa func minMax(array: [Int]) -> (min: Int, max: Int) { var currentMin = array[0] var currentMax = array[0] for value in array[1..<array.count] { if value < currentMin { currentMin = value } else if value > currentMax { currentMax = value } } return (currentMin, currentMax) } let bounds = minMax([8, -6, 2, 109, 3, 71]) print("最小值为 \(bounds.min) ,最大值为 \(bounds.max)")
Minmax (_ :) fungsi mengembalikan tuple dari dua nilai Int, Anda dapat mengaksesnya dengan nama nilai-nilai tersebut ditandai sebagai min dan max, sehingga permintaan mengembalikan nilai fungsi di.
Output di atas eksekusi program adalah:
最小值为 -6 ,最大值为 109
Jika Anda tidak yakin tuple kembali tidak boleh nihil, maka Anda dapat kembali jenis tupel opsional.
Anda dapat menempatkan tanda tanya setelah penutupan jenis kurung tuple untuk mendefinisikan tuple opsional seperti (Int, Int)? Atau (String, Int, Bool)?
Catatan Jenis tuple opsional seperti
(Int, Int)?
Tuple berisi jenis opsional seperti(Int?, Int?)
Apakah yang berbeda. Opsional jenis tuple, seluruh tupel adalah opsional, dan bukan hanya setiap nilai elemen tuple.
Depan minMax(_:)
mengembalikan fungsi dua berisi Int
nilai tupel. Tapi fungsi tidak melakukan apapun pemeriksaan keamanan pada array yang masuk, jika array
parameter adalah array kosong, seperti yang didefinisikan di atas minMax(_:)
mencoba untuk mengakses array[0]
memicu kesalahan runtime.
Untuk mengatasi hal ini "array kosong" isu-isu aman, yang minMax(_:)
fungsi ditulis ulang untuk menggunakan opsional tuple jenis kembali dan kembali ketika array kosong nil
:
import Cocoa func minMax(array: [Int]) -> (min: Int, max: Int)? { if array.isEmpty { return nil } var currentMin = array[0] var currentMax = array[0] for value in array[1..<array.count] { if value < currentMin { currentMin = value } else if value > currentMax { currentMax = value } } return (currentMin, currentMax) } if let bounds = minMax([8, -6, 2, 109, 3, 71]) { print("最小值为 \(bounds.min),组大值为 \(bounds.max)") }
Output di atas eksekusi program adalah:
最小值为 -6,组大值为 109
Tidak ada nilai pengembalian fungsi
Berikut adalah w3big (_ :) Versi lain dari fungsi, fungsi menerima situs resmi parameter URL tutorial, jenis kembali tidak ditentukan, dan nilai output langsung String bukannya kembali:
import Cocoa func w3big(site: String) { print("本教程官网:\(site)") } w3big("http://www.w3big.com")
Output di atas eksekusi program adalah:
本教程官网:http://www.w3big.com
Fungsi Nama parameter
Fungsi argumen memiliki nama parameter eksternal dan nama parameter lokal.
Nama parameter lokal
Nama parameter lokal dalam fungsi pelaksanaan internal untuk digunakan.
func sample(number: Int) { println(number) }
Contoh di atas jumlah nama parameter lokal hanya dapat digunakan dalam fungsi tubuh.
import Cocoa func sample(number: Int) { print(number) } sample(1) sample(2) sample(3)
Output di atas eksekusi program adalah:
1 2 3
Eksternal nama parameter
Anda dapat menentukan nama parameter eksternal di depan nama-nama parameter lokal, dipisahkan oleh spasi, nama-nama parameter eksternal untuk parameter yang dikirimkan ke fungsi saat fungsi dipanggil.
Anda dapat menentukan berikut dua fungsi nama parameter dan menyebutnya:
import Cocoa func pow(firstArg a: Int, secondArg b: Int) -> Int { var res = a for _ in 1..<b { res = res * a } print(res) return res } pow(firstArg:5, secondArg:3)
Output di atas eksekusi program adalah:
125
Perhatikan bahwa jika Anda memberikan nama parameter eksternal, maka fungsi ini disebut, Anda harus menggunakan nama parameter eksternal.
parameter variabel
parameter variabel dapat menerima nol atau lebih nilai. Ketika fungsi ini disebut, Anda dapat menggunakan parameter variabel untuk menentukan argumen fungsi, jumlah mereka tidak pasti.
Variabel parameter dengan nama dalam jenis variabel, masukkan (...) cara untuk menentukan.
import Cocoa func vari<N>(members: N...){ for i in members { print(i) } } vari(4,3,5) vari(4.5, 3.1, 5.6) vari("Google", "Baidu", "w3big")
Output di atas eksekusi program adalah:
4 3 5 4.5 3.1 5.6 Google Baidu w3big
Konstanta, variabel dan saya O parameter /
Umumnya parameter default parameter konstan didefinisikan dalam fungsi, yang merupakan satu-satunya parameter yang dapat Anda gunakan query, Anda tidak dapat mengubah nilainya.
Jika Anda ingin mendeklarasikan parameter variabel, Anda dapat menambahkan var di depan sehingga Anda dapat mengubah nilai parameter ini.
Sebagai contoh:
func getName(var id:String).........
Dalam hal ini nilai-nilai id bisa berubah fungsi.
Biasanya default parameter tersebut diteruskan oleh panggilan nilai, tidak lulus dengan referensi. Jadi parameter yang masuk dalam perubahan fungsi tidak mempengaruhi parameter asli. Baru saja melewati salinan parameter ini.
parameter variabel, seperti dijelaskan di atas, hanya dapat diubah dalam tubuh fungsi. Jika Anda ingin fungsi dapat mengubah nilai parameter, dan Anda ingin perubahan ini pada akhir fungsi panggilan tetap, maka Anda harus menempatkan parameter ini didefinisikan sebagai parameter input dan output (In-Out Parameter).
Ketika mendefinisikan input dan output parameter, definisi parameter sebelum menambahkan inout kata kunci. Input dan output parameter telah lulus nilai fungsi, nilai fungsi dimodifikasi dan kemudian menyebar fungsi, menggantikan nilai asli.
contoh
import Cocoa func swapTwoInts(var a:Int,var b:Int){ let t = a a = b b = t } var x = 0,y = 100 print("x = \(x) ;y = \(y)") swapTwoInts(x, b:y) print("x = \(x) ;y = \(y)")
Output di atas eksekusi program adalah:
x = 0 ;y = 100 x = 0 ;y = 100
Modifikasi adalah dengan menggunakan kata kunci inout:
import Cocoa func swapTwoInts(inout a:Int,inout b:Int){ let t = a a = b b = t } var x = 0,y = 100 print("x = \(x) ;y = \(y)") swapTwoInts(&x, b:&y) print("x = \(x) ;y = \(y)")
Output di atas eksekusi program adalah:
x = 0 ;y = 100 x = 100 ;y = 0
Fungsi jenis dan penggunaan
Setiap fungsi memiliki fungsi tertentu dari jenis spesies, jenis parameter fungsi dan kembali jenis.
func inputs(no1: Int, no2: Int) -> Int { return no1/no2 }
Contohnya adalah sebagai berikut:
import Cocoa func inputs(no1: Int, no2: Int) -> Int { return no1/no2 } print(inputs(20,no2:10)) print(inputs(36,no2:6))
Output di atas eksekusi program adalah:
2 6
Int atas fungsi mendefinisikan dua jenis parameter, kembali nilai-nilai untuk jenis Int.
Selanjutnya kita melihat fungsi berikut, fungsi mendefinisikan parameter tipe String, nilai kembali dari tipe String.
Func inputstr(name: String) -> String { return name }
Anda juga dapat menentukan parameter fungsi dan jenis, sebagai berikut:
import Cocoa func inputstr() { print("本教程") print("www.w3big.com") } inputstr()
Output di atas eksekusi program adalah:
本教程 www.w3big.com
Jenis penggunaan fungsi
Dalam Swift, penggunaan jenis fungsi Seperti dengan jenis lain. Misalnya, Anda dapat menentukan konstanta atau variabel fungsi jenis dan fungsi yang sesuai yang ditugaskan untuk itu:
var addition: (Int, Int) -> Int = sum
resolusi:
"Mendefinisikan disebut addition
variabel, parameter dan jenis pengembalian nilai Int
, dan biarkan ini baru poin variabel sum
fungsi."
sum
dan addition
memiliki tipe yang sama, operasi di atas adalah legal.
Sekarang, Anda dapat menggunakan Selain memanggil fungsi yang ditetapkan dari:
import Cocoa func sum(a: Int, b: Int) -> Int { return a + b } var addition: (Int, Int) -> Int = sum print("输出结果: \(addition(40, 89))")
Output di atas eksekusi program adalah:
输出结果: 129
Fungsi tipe sebagai jenis parameter, tipe fungsi sebagai jenis kembali
Kita dapat berfungsi sebagai parameter untuk parameter lain:
import Cocoa func sum(a: Int, b: Int) -> Int { return a + b } var addition: (Int, Int) -> Int = sum print("输出结果: \(addition(40, 89))") func another(addition: (Int, Int) -> Int, a: Int, b: Int) { print("输出结果: \(addition(a, b))") } another(sum, a: 10, b: 20)
Output di atas eksekusi program adalah:
输出结果: 129 输出结果: 30
fungsi bersarang
fungsi bersarang mengacu pada definisi fungsi baru dalam fungsi, fungsi eksternal dapat memanggil fungsi dalam definisi fungsi.
Contohnya adalah sebagai berikut:
import Cocoa func calcDecrement(forDecrement total: Int) -> () -> Int { var overallDecrement = 0 func decrementer() -> Int { overallDecrement -= total return overallDecrement } return decrementer } let decrem = calcDecrement(forDecrement: 30) print(decrem())
Output di atas eksekusi program adalah:
-30