Swift 方法
在Swift4中,方法是與特定類型相關聯的函數。愛掏網 - it200.com在Objective-C中,類用于定義方法,而在Swift4中,我們有用于類、結構和枚舉的方法。愛掏網 - it200.com
實例方法是與類、結構或枚舉實例相關聯的方法。愛掏網 - it200.com實例方法寫在該類型的主體內部。愛掏網 - it200.com
實例方法提供與實例的需求相關的功能,并且可以訪問和修改實例屬性。愛掏網 - it200.com實例方法寫在大括號 {} 內部。愛掏網 - it200.com它可以隱式訪問類型實例的方法和屬性。愛掏網 - it200.com當調用類型的特定實例時,它將獲得訪問該特定實例的權限。愛掏網 - it200.com
語法
func funcname(Parameters) -> returntype {
Statement1
Statement2
---
Statement N
return parameters
}
示例
class calculate {
let a: Int
let b: Int
let res: Int
init(a: Int, b: Int) {
self.a = a
self.b = b
res = a + b
}
func tot(c: Int) -> Int {
return res - c
}
func result() {
print("Result is: \(tot(c: 20))")
print("Result is: \(tot(c: 50))")
}
}
let pri = calculate(a: 200, b: 300)
pri.result()
輸出:
Result is: 480
Result is: 450
在上面的示例中,class calculate 定義了兩個實例方法:
- init() 用于將兩個數字 a 和 b 相加并將結果存儲在變量 ‘res’ 中。愛掏網 - it200.com
- tot() 用于將傳入的參數 ‘c’ 減去 ‘res’ 的值。愛掏網 - it200.com
局部和全局參數名
在 Swift4 中,函數可以描述其變量的局部和全局聲明。愛掏網 - it200.com對于函數和方法,局部和全局參數名聲明的特征是不同的。愛掏網 - it200.com在 Swift 4 中,第一個參數通過名為 ‘with’、’for’ 和 ‘by’ 的介詞來引用,以方便訪問命名約定。愛掏網 - it200.com
在 Swift 4 中,您可以將第一個參數名稱聲明為局部參數名,將其余參數名稱聲明為全局參數名。愛掏網 - it200.com
讓我們看一個示例。愛掏網 - it200.com這里將 ‘no1’ 聲明為局部參數名,并通過整個程序使用 ‘no2’ 進行全局聲明和訪問。愛掏網 - it200.com
示例
class divide {
var count: Int = 0
func incrementBy(no1: Int, no2: Int) {
count = no1 / no2
print(count)
}
}
let counter = divide()
counter.incrementBy(no1: 100, no2: 3)
counter.incrementBy(no1: 200, no2: 5)
counter.incrementBy(no1: 400, no2: 7)
輸出結果:
33
40
57
方法中的Self屬性
方法對于其定義的所有類型實例都有一個隱含的屬性稱為 ‘self’。愛掏網 - it200.comSelf屬性或Self方法用于訪問實例本身。愛掏網 - it200.com
示例
class calculate {
let a: Int
let b: Int
let res: Int
init(a: Int, b: Int) {
self.a = a
self.b = b
res = a + b
print("Result Inside Self Block: \(res)")
}
func tot(c: Int) -> Int {
return res - c
}
func result() {
print("Result is: \(tot(c: 20))")
print("Result is: \(tot(c: 50))")
}
}
let pri = calculate(a: 100, b: 200)
let sum = calculate(a: 300, b: 400)
pri.result()
sum.result()
輸出:
Result Inside Self Block: 300
Result Inside Self Block: 700
Result is: 280
Result is: 250
Result is: 680
Result is: 650
從實例方法修改值類型
在Swift 4中,結構體和枚舉屬于值類型,不能通過其實例方法進行修改,但是我們可以通過’mutating’行為來修改值類型。愛掏網 - it200.com使用mutate會在實例方法中進行任何更改,并在方法執行后返回到原始形式。愛掏網 - it200.com此外,通過’self’屬性,為其隱式函數創建新的實例,并在執行后替換現有方法。愛掏網 - it200.com
示例
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: 2)
val.scaleBy(res: 20)
val.scaleBy(res: 200)
輸出:
6
10
120
200
24000
40000