在Swift中,函數使用func
關鍵字來聲明。這是基本的函數聲明方式:
func sayHello() {
print("Hello, world!")
}
Swift不支持類似JavaScript的函數表達式,但你可以將函數賦值給變數或常量,然後使用這些變數或常量來調用函數。
let greeting = sayHello
greeting()
匿名函數在Swift中稱為閉包。閉包是一種自包含的代碼塊,可以在代碼中傳遞和使用。
let multiply = { (a: Int, b: Int) -> Int in
return a * b
}
let product = multiply(4, 5)
print(product) // 20
函數呼叫使用函數名稱後跟一對括號,括號內包含任何參數。
sayHello()
函數可以接受單個參數。
func greet(name: String) {
print("Hello, \\\\(name)!")
}
greet(name: "Alice") // Hello, Alice!
函數可以接受多個參數。
func add(a: Int, b: Int) -> Int {
return a + b
}
let sum = add(a: 3, b: 4)
print(sum) // 7
可以為函數參數提供預設值。
func greet(name: String = "Guest") {
print("Hello, \\\\(name)!")
}
greet() // Hello, Guest!
greet(name: "Bob") // Hello, Bob!
使用剩餘參數(變長參數)來接收不定數量的參數。
func sum(numbers: Int...) -> Int {
return numbers.reduce(0, +)
}
let result = sum(numbers: 1, 2, 3, 4, 5)
print(result) // 15
函數可以返回單個值。
func square(number: Int) -> Int {
return number * number
}
let squared = square(number: 4)
print(squared) // 16
使用元組來返回多個值。
func minMax(numbers: [Int]) -> (min: Int, max: Int)? {
guard let first = numbers.first else {
return nil
}
var currentMin = first
var currentMax = first
for number in numbers.dropFirst() {
if number < currentMin {
currentMin = number
} else if number > currentMax {
currentMax = number
}
}
return (min: currentMin, max: currentMax)
}
if let result = minMax(numbers: [1, 2, 3, 4, 5]) {
print("Min is \\\\(result.min) and Max is \\\\(result.max)")
}
// Min is 1 and Max is 5
函數可以返回物件或自定義型別的實例。
struct Person {
var name: String
}
func createPerson(name: String) -> Person {
return Person(name: name)
}
let person = createPerson(name: "Alice")
print(person.name) // Alice
函數可以返回另一個函數。
func makeIncrementer(increment amount: Int) -> ((Int) -> Int) {
func incrementer(value: Int) -> Int {
return value + amount
}
return incrementer
}
let incrementByTen = makeIncrementer(increment: 10)
print(incrementByTen(5)) // 15
這些是Swift中有關函數的基本概念和操作方法。理解並掌握這些內容將幫助你在Swift編程中更好地使用和管理函數。