๐ก์๋ธ์คํฌ๋ฆฝํธ(Subscript)?
- ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ์์ ์ปฌ๋ ์ , ๋ฆฌ์คํธ, ์ํ์ค ๋ฑ ํ์ ์ ์์์ ์ ๊ทผํ๊ธฐ ์ํ ๋ฌธ๋ฒ
- ์๋ธ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ฉด, ์ถ๊ฐ์ ์ธ ๋ฉ์๋ ์์ด ํน์ ๊ฐ์ ๊ฐ์ ธ์ค๊ฑฐ๋ ํ ๋นํ ์ ์๋ค.
โฐ ์๋ธ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ
subscript(index: Int) -> Int {
get {
// ์ ์ ํ Return Value
}
set(newValue) {
// ์ ์ ํ Set Action
}
}
๊ทผ๋ฐ ๊ทธ๋ฅ ์๋์ฒ๋ผ
subscript(index: Int) -> Int {
// ์ ์ ํ ๋ฐํ ๊ฐ
}
get, set ์๋ฌด๊ฒ๋ ์์ด ์ค์ ํ ๊ฒฝ์ฐ, get์ผ๋ก ๋์ํ๊ฒ ๋์ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ ์ธ๋๋ค.
๐ซ get-only๋ ๊ฐ๋ฅํ์ง๋ง, set-only๋ ๋ถ๊ฐ๋ฅ
์์ ์ฝ๋๋ก ์๋ธ์คํฌ๋ฆฝํธ์ getter์ setter์ ์ ๊ทผ์ ์์ธํ ์์๋ณด์
import Foundation
struct ExList {
var list: [Int] = [0,1,2,3,4]
subscript(index: Int) -> Int {
get {
return list[index]
}
set {
list[index] = newValue
}
}
}
var exList: ExList = .init()
print(exList[0]) // ์๋ธ์คํฌ๋ฆฝํธ getter ์ ๊ทผ
exList[1] = 9 // ์๋ธ์คํฌ๋ฆฝํธ setter ์ ๊ทผ
print(exList)
// 0
// ExList(list: [0, 9, 2, 3, 4])
๐กํ์ ์๋ธ์คํฌ๋ฆฝํธ?
- ํ์ ํ๋กํผํฐ / ํ์ ๋ฉ์๋์ ๊ฐ์ด ์ธ์คํด์ค๊ฐ ํ์์ (?)์ด์ง ์๊ณ ํ์ ๋ง ์๋ค๋ฉด ์์์ ์ ๊ทผ ๊ฐ๋ฅ!
- ์ค๋ฒ๋ผ์ด๋ฉ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ฉด static, ๊ฐ๋ฅํ๋ค๋ฉด class ํค์๋๋ฅผ subscript ํค์๋ ์์ ๋ถ์ฌ์ฃผ๋ฉด ํ์ ์๋ธ์คํฌ๋ฆฝํธ๊ฐ ๋๋ ๊ฒ!
โฐํ์ ์๋ธ์คํฌ๋ฆฝํธ ์์
import Foundation
struct ExList {
static var list: [Int] = [0,1,2,3,4]
static subscript(index: Int) -> Int {
get {
return list[index]
}
set {
list[index] = newValue
}
}
}
print(ExList[3]) // ์๋ธ์คํฌ๋ฆฝํธ getter ์ ๊ทผ
ExList[1] = 9 // ์๋ธ์คํฌ๋ฆฝํธ setter ์ ๊ทผ
print(ExList[1])
// 3
// 9
→ ์ธ์คํด์ค ์์ฑ์์ด ํ์ ์ด๋ฆ์ผ๋ก ํธ์ถ์ด ๊ฐ๋ฅํจ์ ํ์ธํ ์ ์๋ค!
'Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] Any / AnyObject (0) | 2022.08.14 |
---|---|
[Swift] ํ์ ์บ์คํ : is, as (0) | 2022.08.13 |
[Swift] ์์ (0) | 2022.08.02 |
[Swift] ๋ฐฑ์ค : 10814 (๊ตฌ์กฐ์ฒด) (0) | 2022.08.02 |
[Swift] zip(_:_:) (0) | 2022.07.27 |