實體方法(Instance method)
型別方法(type method),不用生成實體就可以呼叫。
下標(subscript)
實體方法
內建屬性 self
為實體隱藏屬性,實體方法中,當參數與屬性名相同的時候可以運用,如下:
參數:count
屬性:self.count
值型別修改
變異(mutating
)這個方法,將關鍵字mutating
放在方法的func
之前就可以了,如果是常數,無法修改。修改後可以指派給self,作為值的改變。
//定義一個結構 Point
struct Point {
// 兩個變數屬性 可以代表一個二維圖上的一個點
var x = 0.0, y = 0.0
// 一個變異方法 會將兩個屬性各別加上一個值
mutating func moveByX(deltaX: Double, y deltaY: Double) {
x += deltaX
y += deltaY
}
}
// 生成一個結構的實體的變數 並給初始值
var somePoint = Point(x: 1.0, y: 1.0)
// 修改其內的屬性值
somePoint.moveByX(2.0, y: 3.0)
// 現在兩個屬性已經被改變了
// 印出:x: 3.0, y: 4.0
print("x: \(somePoint.x), y: \(somePoint.y)")
型別方法
定義在特定型別(類別、結構與列舉)上的方法,與實體方法一樣使用點語法(dot syntax
)呼叫。
宣告型別方法時需要在func
前加上關鍵字static
,可以將static
替換成class
來讓子類別覆寫(override
)父類別的類別。
下標
在陣列或字典名稱後面緊接著中括號[]
,括號內填入陣列的索引值(index
)或是字典的鍵(key
),即可存取或設置值。
// 宣告一個 [Int] 型別的陣列
var arr = [1,2,3,4,5,6,7]
// 印出其內第三個元素(請記得 陣列的索引值是從 0 開始算起)
print(arr[4])
// 修改第四個元素為 12
arr[3] = 12
// 宣告一個 [String:String] 型別的字典
var dict = ["name":"Kevin","city":"Taipei"]
// 印出鍵為 name 的值
print(dict["name"])
// 修改鍵為 city 的值為 New York
dict["city"] = "New York"