Latest web development tutorials

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