๐ฅ ๋ฐฐ์ด ์์ ํ๊ฒ ์กฐํํ๊ธฐ
๐ ๋ฐฐ์ด์ ์์ ํ๊ฒ ์กฐํํด์ผ๋๋ ์ด์ ?
- Array: Out of range ๋ฐํ์ error๊ฐ ๋ฐ์์ด๋๋ฉด ํ๋ก๊ทธ๋จ์ด ๋ฐ๋ก ์ฃฝ๊ธฐ ๋๋ฌธ์ ์์ ํ๊ฒ ์กฐํ๋ฅผ ํด์ผ๋๋ค.
- ๋ฐ๋ผ์, ์ฐ๋ฆฌ๋ ๋ง์ฝ out of range์ด๋ฉด nil์ ๋ด๋ฑ๋ ์๋ธ ์คํฌ๋ฅด๋นํธ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค.
extension Array {
public subscript (safe index: Int) -> Element? {
return indices ~= index ? self[index] : nil // iOS 9 or later
}
}
let list = [1, 2, 3]
list[safe: 4] // nil
list[safe: 2] // 3
๐ค ‘~=’ ์ฐ์ฐ์๋ ๋ญ๊น?..
- ๋์์ด ํน์ ๋ฒ์์ ์ํ๋ ์ง ๋ฒ์๋ฅผ ์ฒดํฌํ๋ ์ฐ์ฐ์
- switch ๊ตฌ๋ฌธ์ด ํด๋น ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค.(๋ด๋ถ์ ์ผ๋ก case์ ๋ฒ์๋ฅผ ์ฒดํฌํ ๋ ์ฌ์ฉํ๋ค.)
์๋ฅผ ํตํ์ฌ ํ์ฉ์ ์์๋ณด์.
- ์๋์ ์ฝ๋๋ ๋ง์ฝ n์ด 0๊ณผ 10์ฌ์ด์ผ ๊ฒฝ์ฐ n์ ๊ณฑํ๊ธฐ 10์ ํ๋ผ๋ ์ฝ๋์ด๋ค.
var n = 5
if 0..<10 ~= n {
n *= 10
}
print(n) // 50
- ๋ฐ๋ผ์ ์๋์ ์ฝ๋์์
- indices ⇒ ์ฝ๋ ์ ํ์ ์ ํ๋กํผํฐ๋ก์จ collection์ ์ ํจ ๋ฒ์๋ฅผ ๊ฐ๊ณ ์๋ ํ๋กํผํฐ์ด๋ค. [1,2,3,4,5]๋ผ๋ฉด, indices๋ 0..<5์ด๋ค.
- ๋ง์ฝ Index๊ฐ indices ๋ฒ์ ์์ ์๋ค๋ฉด nil์, ๋ง์ฝ ์๋ค๋ฉด self[index]๋ฅผ returnํ๋ผ๋ ๋ป์ด๋ค.
return indices ~= index ? self[index] : nil
๐ ์ฐธ๊ณ ์๋ฃ
'Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ํ์ ํ๋กํผํฐ, ํ์ ๋ฉ์๋ (0) | 2023.02.04 |
---|---|
[Swift] first ๋ฌธ (0) | 2023.02.04 |
[Swift] Optional (0) | 2023.02.04 |
[Swift] ๋ฉํํ์ (0) | 2023.02.03 |
[Swift] Generic (0) | 2023.02.03 |