๐กself ํ๋กํผํฐ?
์ธ์คํด์ค๋ฅผ ๋ ๋ช ํํ๊ฒ ์ง์นญํ๊ณ ์ถ์ ๋ ์ฌ์ฉ
์ค์ํํธ๋ ์๋์ผ๋ก ๋ฉ์๋ ๋ด๋ถ์ ์ ์ธ๋ ์ง์ญ๋ณ์ -> ๋ฉ์๋ ๋งค๊ฐ๋ณ์ -> ์ธ์คํด์ค ํ๋กํผํฐ๋ฅผ ์ฐพ์ ์ง์ ํ๋ ๊ฒ์ ์ ์ถํ๋ค.
์ด๋, self ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์๋์์ ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์ธ์คํด์ค ํ๋กํผํฐ๋ฅผ ์ง์นญํ ์ ์๋ค.
โฐself ํ๋กํผํฐ์ ๋ค๋ฅธ ์ฉ๋
๊ฐ ํ์ ์ธ์คํด์ค ์์ฒด์ ๊ฐ์ ์นํํ ์ ์๋ค.
ํด๋์ค์ ์ธ์คํด์ค๋ ์ฐธ์กฐ ํ์ ์ด๋ผ์ self ํ๋กํผํฐ์ ๋ค๋ฅธ ์ฐธ์กฐ๋ฅผ ํ ๋นํ ์ ์๋๋ฐ, ๊ตฌ์กฐ์ฒด๋ ์ด๊ฑฐํ ๋ฑ์ self ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์์ฒด๋ฅผ ์นํํ ์ ์๋ค.
โฐself ํ๋กํผํฐ์ mutating ํค์๋
mutating ํค์๋ ?
- ์์ ์ ํ๋กํผํฐ ๊ฐ์ ์์ ํ ๋ ํด๋์ค์ ์ธ์คํด์ค ๋ฉ์๋๋ ํฌ๊ฒ ์ ๊ฒฝ์ธ ํ์๊ฐ ์์ง๋ง, ๊ตฌ์กฐ์ฒด๋ ์ด๊ฑฐํ ๋ฑ์ ๊ฐ ํ์ ์ด๋ฏ๋ก ๋งค์๋ ์์ mutating ํค์๋๋ฅผ ๋ถ์ฌ์ ํด๋น ๋ฉ์๋๊ฐ ์ธ์คํด์ค ๋ด๋ถ์ ๊ฐ์ ๋ณ๊ฒฝํ๋ค๋ ๊ฒ์ ๋ช ์ํด์ผํ๋ค.
class LevelClass{
var level: Int = 0
func reset() {
// ์ค๋ฅ! self ํ๋กํผํฐ ์ฐธ์กฐ ๋ณ๊ฒฝ ๋ถ๊ฐ!
self = LevelClass()
}
}
struct LevelStruct{
var level: Int = 0
mutating func levelUp() {
print("Level Up")
level += 1
}
mutating func reset() {
print("Reset!")
self = LevelStruct()
}
}
โฐ ํ์ ๋ฉ์๋์์์ self ํ๋กํผํฐ
ํ์ ๋ฉ์๋์์๋ ์ธ์คํด์ค ๋ฉ์๋์๋ ๋ฌ๋ฆฌ self ํ๋กํผํฐ๊ฐ ํ์ ๊ทธ ์์ฒด๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
๊ทธ๋์ ํ์ ๋ฉ์๋ ๋ด๋ถ์์ ํ์ ์ด๋ฆ๊ณผ self๋ ๊ฐ์ ๋ป!
ํ์ ๋ฉ์๋์์ self ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ ํ๋กํผํฐ ๋ฐ ํ์ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์๋ค.
๐กํ์ ๋ฉ์๋
- ํ์ ์์ฒด์ ํธ์ถ์ด ๊ฐ๋ฅํ ๋ฉ์๋
- ๋ฉ์๋ ์์ static ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ํํ
- static ํค์๋๋ก ์ ์ -> ์์ ํ ๋ฉ์๋ ์ฌ์ ์๊ฐ ๋ถ๊ฐ๋ฅ
- class ํค์๋๋ก ์ ์ -> ์์ ํ ๋ฉ์๋ ์ฌ์ ์๊ฐ ๊ฐ๋ฅ
Reference
Swift ์ค์ํํธ ํ๋ก๊ทธ๋๋ฐ - ์ผ๊ณฐ
'Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ์ ๊ทผ์ ์ด : ์ฝ๊ธฐ ์ ์ฉ ๊ตฌํ (0) | 2022.03.19 |
---|---|
[Swift] ํจ์๋ฅผ ์ฌ์ฉํ ํ๋กํผํฐ ๊ธฐ๋ณธ๊ฐ ์ค์ (0) | 2022.03.19 |
[Swift] ์ฐ์ฐ ํ๋กํผํฐ๋ก ๊ฐ๋ ์ฑ ๋์ด๊ธฐ! (0) | 2022.03.19 |
[Swift] ๊ตฌ์กฐ์ฒด์ ํด๋์ค (0) | 2022.03.17 |
[Swift] ์ต์ ๋ : ์ต์ ๋ ์ถ์ถ (0) | 2022.03.17 |