ν΄λμ€, ꡬ쑰체, μ΄κ±°ν μμ νΉμ κΈ°λ₯μ μΊ‘μννλ μΈμ€ν΄νΈ λ©μλλ₯Ό μ μν μ μλ€.
νλ‘νΌν°μ²λΌ νμ
μ κ΄λ ¨λ λ©μλλ μ μ κ°λ₯.
ꡬ쑰체μ μ΄κ±°νμμλ κ°λ₯νλ€λκ² C/obj-C μ Swift μ ν° μ°¨μ΄μ .
ν¨μμ λ¬Έλ²μ λμΌνλ€! κ·Έμ ν΄λμ€, ꡬ쑰체, μ΄κ±°ν λ΄μμ μ μΈν λΏ!
self
λΌλ μμμ μΈ νλ‘νΌν° κ°μ§.var x = 10
func changeX(x: Int) {
self.x = x
}
κΈ°λ³Έμ μΌλ‘ ꡬ쑰체, μ΄κ±°νμ κ° νμ μμ μμ μ νλ‘νΌν° μμ μ λΆκ°λ₯νλ€.
struct Album {
var price = 15000
mutating func upPrice(to newPrice: Int) {
price = newPrice
}
mutating func downPrice(to newPrice: Int) {
// μ΄λ κ² μμ self λ₯Ό μ¬ν λΉ ν΄λ²λ¦΄ μλ μλ€.
self = Album(price: newPrice)
}
}
var album = Album(price: 17000)
album.upPrice(to: 19000)
enum μμλ self λ₯Ό μ΄μ©ν μ²λ¦¬ κ°λ₯!!
enum TriStateSwitch {
case off, low, high
mutating func next() {
switch self {
case .off:
self = .low
case .low:
self = .high
case .high:
self = .off
}
}
}
var ovenLight = TriStateSwitch.low
ovenLight.next()
// ovenLight is now equal to .high
ovenLight.next()
// ovenLight is now equal to .off
π self ν€μλλ₯Ό ν΅ν΄μ ν΄λΉ κ°νμ μΈμ€ν΄μ€ μ체λ₯Ό λ°κΏλ²λ¦΄ μλ μλ€.
mutating func reset() {
self = LevelStruct()
}
νμ νλ‘νΌν°μ²λΌ, νΉμ νμ μ체μ νΈμΆνλ λ©μλ.
ν€μλλ₯Ό μ¬μ©ν΄μ μ μνλ©΄ λλ€.
struct Point {
var x: Int
var y: Int
}
extension Point: Equatable {
static func == (lhs: Point, rhs: Point) {
return (lhs.x == rhs.x) && (lhs.y == rhs.y)
}
}
ν΄λμ€ λ©μλλ class ν€μλλ₯Ό μ¬μ©νμ¬ μ μνλ€.
ν΄λμ€ μμμ μ μλλ λ©μλμ΄κΈ° λλ¬Έμ λΆλͺ¨μ class method λ₯Ό μμνμ¬ μ€λ²λΌμ΄λ© ν΄μ μ¬μ μ ν μ μλ€.
+) μΈμ€ν΄μ€ λ©μλλ μΈμ€ν΄μ€ μμ± νμλ§ μ¬μ©μ΄ κ°λ₯νλ€. κ·Έλ¬λ ν΄λμ€ λ©μλλ ν΄λμ€μ μ μΈλ λ©μλμ΄λ―λ‘, μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μμλ μ¬μ©μ΄ κ°λ₯νλ€.
μ£Όλ μ°¨μ΄μ μ μμ, class λ©μλλ μμμΌλ‘ μ¬μ μκ° κ°λ₯νλ€λ μ μ΄λ€.
mutating μ κ° νμ μ΄λΌ μΈμ€ν΄μ€ λ΄μ κ°μ
point.x = 10
struct Point {
var x: Int = 10
var y: Int = 20
func changeX(newX: Int) {
x = newX
}
}
μ΄λ° ννλ‘ λ°κΏ μ μλ ꡬ쑰체, μ΄κ±°νμμ μΈμ€ν΄μ€ λ΄μ κ°μ λ°κΎΈλ λ©μλλ₯Ό μ μν λ, ν¨μ μμ λΆμ¬μ£Όλ ν€μλμ΄λ€.
mutating func changeX(newX: Int) {
x = newX
}
μ΄λ κ² νλ©΄ selfμ μλ‘μ΄ struct/enum μΈμ€ν΄μ€λ₯Ό ν λΉνκ³ , ν΄λΉ μΈμ€ν΄μ€μ νλ‘νΌν° κ°μ λ°κΎΈμ΄μ λ©μλκ° μ’ λ£λλ©΄ κΈ°μ‘΄ μΈμ€ν΄μ€ λμ μλ‘μ΄(μνλ λλ‘ κ°μ΄ λ°λ) μΈμ€ν΄μ€λ₯Ό μ¬μ©νλ€.
μ°Έκ³
https://bbiguduk.gitbook.io/swift/language-guide-1/methods
https://sujinnaljin.medium.com/swift-staticκ³Ό-class-method-property-ν¨κ³Όμ μΌλ‘-μ¬μ©νκΈ°-b336311a923c