Swift基礎--方法
swift中方法分為實例方法和靜態(tài)方法,方法時于默寫特定類型相關聯(lián)的函數(shù).類,結構體,枚舉都可以定義實例方法,也可以定義靜態(tài)方法.
一,實例方法
實例方法: 給特定類型實例封裝的具體功能函數(shù). 實例方法使用與類,結構體,枚舉
1.1,使用類中定義的實例方法
首先在勒種定義方法,然后通過創(chuàng)建類的實例,是哪個"實例.方法名"即可調(diào)用,如:
class Player {
func run() {
print(" run.........")
}
}
let player = Player()
player.run()
out:
run.........
1.2,使用結構體中定義的實例方法
首先在結構體中定義方法,要在定義的方法前添加關鍵字"mutating"來聲明這個方法是"變異方法",如果在此方法中還要釣友結構體中的屬性,則必須在調(diào)用屬性前添加"self."來證明屬性來源于此結構體.然后通過創(chuàng)建類的實例,使用"實例.方法名"進行調(diào)用,如:
struct Point {
var x:CGFloat = 0, y: CGFloat = 0
mutating func safeZone(x: CGFloat, y: CGFloat) {
self.x = x
self.y = y
print("x:\(x), y:\(y)")
}
}
var point = Point()
point.safeZone(x: 100, y: 100)
out:
x:100.0, y:100.0
1.3 使用枚舉中定義的實例方法
枚舉中定義的實例方法和結構體一樣,要在定義的方法前添加"mutating"關鍵字來聲明這個方法時"變異方法",如果在此方法中還要調(diào)用枚舉中的匹配枚舉值,則必須使用"self"來證明匹配枚舉值來源于此枚舉,然后通過創(chuàng)建枚舉的實例來調(diào)用方法,如:
enum Duration {
case east,south,west,north
mutating func getDuration() {
print("duration:\(self)")
switch self {
case .east:
self = .west
case .south:
self = .north
case .west:
self = .east
case .north:
self = .south
}
print("對立的方向:\(self)")
}
}
var duration = Duration.east
duration.getDuration()
out:
對立的方向:west
二,靜態(tài)方法
靜態(tài)方法: 不用創(chuàng)建特定類型的實例就能調(diào)用的具體功能函數(shù)
靜態(tài)方法適用于類,結構體
2.1 使用類中定義的靜態(tài)方法
首先在勒種定義方法,通過在方法名前添加關鍵字"class" 或"static",然后使用"類名.方法名"
即可調(diào)用,如果方法中包含調(diào)用屬性,此屬性必須是靜態(tài)屬性(靜態(tài)屬性也是在普通屬性前面添加關鍵字 "static"),如:
class People {
static var name: String = "kobe"
static func getName() {
print("name:\(name)")
}
}
People.getName()
out:
name:kobe
2.2 使用街骨頭中定義的靜態(tài)方法
通過在方法名前添加關鍵字"static",然后使用"結構體.方法名"即可調(diào)用,如果方法中包含調(diào)用屬性,那么此屬性必須是靜態(tài)屬性(靜態(tài)屬性也是在普通屬性前面添加關鍵字 "static"),如:
struct Z {
static var z: CGFloat = 0
static func getZ() {
print("z:\(z)")
}
}
Z.getZ()
out:
z:0
## hi 各位大佬,如果您喜歡我的文章,可以在以下平臺關注我
[個人網(wǎng)站](https://shunyangsky.com)
微博:[順揚sky](https://weibo.com/2445151355/profile?topnav=1&wvr=6&is_all=1)
簡書:[順揚sky](http://www.itdecent.cn/u/163fccb10ca5)
掘金:[順揚sky](https://juejin.im/user/59a67546518825241e223768)
[CSDN博客](https://me.csdn.net/u011137073)