| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- GIT
- ์๋ฐ
- kotlin ์๊ณ ๋ฆฌ์ฆ
- ์๊ณ ๋ฆฌ์ฆ
- linux
- ํ์ด์ฌ
- ๋ฐฑ์ค
- ์ฝํ๋ฆฐ ์คํ
- ๋ฏธ๊ตญ๋ฐฐ๋น์ฃผํฌ์
- ์ฝํ๋ฆฐ ์๊ณ ๋ฆฌ์ฆ
- ํ์ฝํ
- ๋ฏธ๊ตญ์ฃผ์
- ๋ฐฑ์ค ์ฝํ๋ฆฐ
- python
- ์ฝํ๋ฆฐ
- Vue.js
- ๋ฐฐ๋น์ฃผ
- js
- javascript
- ํ๋ก๊ทธ๋๋จธ์ค
- kotlin algorithm
- pnpm
- Swift
- CI/CD
- Java
- java ์ฝ๋ฉ ํ ์คํธ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์๋ฐ ์๊ณ ๋ฆฌ์ฆ
- vue3
- Kotlin
- Today
- Total
๐ ์ ์ด์ ๋จธ๋ฆฟ์์ผ๋ก
[Swift] Cannot assign to property: 'self' is immutable ๋ณธ๋ฌธ
Cannot assign to property: 'self' is immutable ๋ฌธ์ ์์ธ๊ณผ ํด๊ฒฐ
์ ๋ฌธ์ ๋ ๊ตฌ์กฐ์ฒด(Struct)์์ property๋ฅผ ํจ์๋ฅผ ํตํด์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ ๋, ๋ฐ๊ฒฌํ ์ ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๊ตฌ์กฐ์ฒด๋ ์ค๋ ์ท(snap shot)์ ์ฐ์ด๋ด๋ ๊ฒ์ด๋ค.
struct Example {
var p = 0
func changeP() {
p += 1 //p๋ฅผ 1์ฆ๊ฐ
}
}
์ ์ฝ๋์์ p๋ ๊ฐ๋ณ ๋ณ์๋ก ์ ์ํ๋ค. ํ์ง๋ง ํด๋น ๊ตฌ์กฐ์ฒด๋ ๋ณํ์ง ์๋ ์ค๋ ์ท์ด ๋์ด์ผํ๊ธฐ์ ๊ตฌ์กฐ์ฒด ์ ์ฅ์์ ๋ถ๋ณ์ด์ฌ์ผํ property p๋ฅผ ๊ตฌ์กฐ์ฒด ๋ด๋ถ ํจ์์์ ๋ณ๊ฒฝํ ์ ์๋ค.
var ex1 = Example()
ex1.p = 1 //p๊ฐ์ ๋ณ๊ฒฝ
์ ์ฒ๋ผ Example์ ์์๋ฐ์ ์์ฑํ ex1๊ฐ์ฒด๋ p๊ฐ์ ์ง์ ์์ ์ ๊ฐ๋ฅํ์ง๋ง, ๋์์ธ ํจํด์ ์งํค๊ธฐ ์ํด์ ๊ตฌ์กฐ์ฒด ๋ด๋ถํจ์์์ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ด ํ์ํ ์ํฉ์ด ์๊ธด๋ค.
ํด๊ฒฐ์ฑ (mutating ํค์๋ ์ฌ์ฉ)
struct Example {
var p = 0
mutating func changeP() {
p += 1 //p๋ฅผ 1์ฆ๊ฐ
}
}
๋ด๋ถ property๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด์ func ์์ "mutating" ํค์๋๋ฅผ ์์ฑํ๋ฉด ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค.