๊ณต์๋ฌธ์ : Accesses the element at the specified position.
ํน์ ์์น์ ์๋ ์์ ๊ฐ์ ์ ๊ทผ ํ ์ ์๋ค๋ผ๊ณ ํด์ํ ์ ์๋๋ฐ, ํํ ๋ฐฐ์ด์์ ๊ฐ์ ์ ๊ทผํ ๋ ์ฐ๋ ๋๊ดํธ๊ฐ ๋ฐ๋ก Subscript์ด๋ค.
subscript(index: Int) -> Element { get set }
ํ๋ผ๋ฏธํฐ๋ก index๊ฐ ๋ค์ด์ค๋๋ฐ, ๋ฐ๋ก ์ ๊ทผํ ์์์ ์์น์ด๋ค. index๋ startIndex๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์์ผ ํ๊ณ , endIndex๋ณด๋ค ์์์ผํ๋ค.
๊ฒฐ๊ณผ ๊ฐ์ผ๋ก ํด๋นํ๋ index์์น์ Element๋ฅผ ๋ฐํํ๋ค.
var streets = ["Adams", "Bryant", "Channing", "Douglas", "Evarts"]
streets[1] = "Butler"
print(streets[1])
// Prints "Butler"
์์ ์ฝ๋์ฒ๋ผ ํํ ์ฐ๋ฆฌ๊ฐ ๋ฐฐ์ด์์ ๋ณผ ์ ์๋ ๊ฒ๊ณผ ๊ฐ๋ค.
ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ์์ ๋ชจ๋ ๋ฉค๋ฒ ์์์ ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ๋จ์ผ ํ์ ์ ์ฌ๋ฌ ์๋ธ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ํ ์ ์๋ค.
์์๋ก ์๋ ์ฝ๋๋ฅผ ํ์ธ ํ ์ ์๋ค.
public extension String {
public subscript (i: Int) -> Element {
return self[index(startIndex, offsetBy: i)]
}
}
์ฐ๋ฆฌ๋ ์ฃผ๋ก String์ ์ฌ์ฉํ๋ฉด์ String๋ ๋ฐฐ์ด์ฒ๋ผ String[index]์ฒ๋ผ ํด๋น ๋ฌธ์๋ฅผ ์ ๊ทผํ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
์ด๋ด ๋ ์ ์ฝ๋์ฒ๋ผ extension์ ํตํด subscript๋ฅผ ๊ตฌํํ ์ ์๋ค. ์ด ์ฝ๋๋ง ์๋ค๋ฉด String๋ ๋ฐฐ์ด์ฒ๋ผ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ฒ ๋๋ค.