Skip to content

Latest commit

ย 

History

History
44 lines (31 loc) ยท 1.54 KB

File metadata and controls

44 lines (31 loc) ยท 1.54 KB

Subscript

๊ณต์‹๋ฌธ์„œ : Accesses the element at the specified position.

ํŠน์ • ์œ„์น˜์— ์žˆ๋Š” ์š”์†Œ ๊ฐ’์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ผ๊ณ  ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ํ”ํžˆ ๋ฐฐ์—ด์—์„œ ๊ฐ’์„ ์ ‘๊ทผํ•  ๋•Œ ์“ฐ๋Š” ๋Œ€๊ด„ํ˜ธ๊ฐ€ ๋ฐ”๋กœ Subscript์ด๋‹ค.

Declaration

subscript(index: Int) -> Element { get set }

ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ index๊ฐ€ ๋“ค์–ด์˜ค๋Š”๋ฐ, ๋ฐ”๋กœ ์ ‘๊ทผํ•  ์š”์†Œ์˜ ์œ„์น˜์ด๋‹ค. index๋Š” startIndex๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์•„์•ผ ํ•˜๊ณ , endIndex๋ณด๋‹ค ์ž‘์•„์•ผํ•œ๋‹ค.

๊ฒฐ๊ณผ ๊ฐ’์œผ๋กœ ํ•ด๋‹นํ•˜๋Š” index์œ„์น˜์˜ Element๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Overview

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๋„ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋œ๋‹ค.