๐Ÿฆ… Swift

Subscripts

Kiwi๐Ÿ’ป 2022. 7. 4. 19:24

ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด ๊ทธ๋ฆฌ๊ณ  ์—ด๊ฑฐํ˜•์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ •์˜ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ๋ž€ ์ฝœ๋ ‰์…˜, ๋ฆฌ์ŠคํŠธ, ์‹œํ€€์Šค ๋“ฑ ์ง‘ํ•ฉ์˜ ํŠน์ • ๋ฉค๋ฒ„ ์š”์†Œ์— ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๋ฒ•์ด๋‹ค. ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ถ”๊ฐ€์ ์ธ ๋ฉ”์†Œ๋“œ ์—†์ด ํŠน์ • ๊ฐ’์„ ํ• ๋‹น(assign)ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ฌ ์ˆ˜(retrieve) ์žˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค๋ฉด, ๋ฐฐ์—ด(Array) ์ธ์Šคํ„ด์Šค์˜ ํŠน์ • ์—˜๋ฆฌ๋จผํŠธ๋Š” someArray[index]๋ฌธ๋ฒ•์œผ๋กœ, ์‚ฌ์ „(Dictionary) ์ธ์Šคํ„ด์Šค์˜ ํŠน์ • ์—˜๋ฆฌ๋จผํŠธ๋Š” someDictionary[key]๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜๋‚˜์˜ ํƒ€์ž…์— ์—ฌ๋Ÿฌ ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ณ  ์˜ค๋ฒ„๋กœ๋“œ(Overload)๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฟ๋งŒ์•„๋‹ˆ๋ผ ๋‹จ์ผ ์ธ์ž ๊ฐ’์„ ๋„˜์–ด, ํ•„์š” ๋”ฐ๋ผ ๋ณต์ˆ˜ ์ธ์ž ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ• (Subscript Syntax)

์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ ์„ ์–ธ ๋ฌธ๋ฒ•์€ ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ์™€ ๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค. ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ์™€ ๋‹ค๋ฅธ ์ ์€, ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ๋Š” ์ฝ๊ณ -์“ฐ๊ธฐ(read-write) ํ˜น์€ ์ฝ๊ธฐ ์ „์šฉ(read only)๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ •์˜๋Š” ๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ ๋ฐฉ์‹๊ณผ ๊ฐ™์ด setter, getter ๋ฐฉ์‹์„ ๋”ฐ๋ฅธ๋‹ค.

subscript(index: Int) -> Int {
    get {
        // ์ ์ ˆํ•œ ๋ฐ˜ํ™˜ ๊ฐ’
    }
    set(newValue) {
        // ์ ์ ˆํ•œ set ์•ก์…˜
    }
}

์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ (Subscript Usage)

var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
numberOfLegs["bird"] = 2

numberOfLegs๊ฐ’์€ ํƒ€์ž… ์ถ”๋ก ์— ์˜ํ•ด [String: Int]ํ˜•์„ ๊ฐ–๋Š”๋‹ค. numberOfLegs["bird"] = 2๋Š” ์‚ฌ์ „ํ˜• ๋ณ€์ˆ˜ numberOfLegs์— key๋กœ bird๋ฅผ ๊ทธ ๊ฐ’์€ 2๋ฅผ ๋„ฃ์œผ๋ผ๋Š” ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์ด๋‹ค.

NOTEโ—๏ธ
๋”•์…”๋„ˆ๋ฆฌ์˜ ๋ฐ˜ํ™˜ ๊ฐ’์€ ์˜ต์…”๋„์ด๋‹ค. ๊ทธ ์ด์œ ๋Š” ์‚ฌ์ „์— ํŠน์ • ํ‚ค ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ณ , ํŠน์ • ํ‚ค ๊ฐ’์„ nil๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

'๐Ÿฆ… Swift' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Initialization  (0) 2022.07.13
Inheritance  (0) 2022.07.05
Methods  (0) 2022.07.04
Properties  (0) 2022.07.04
Structures and Classes  (0) 2022.06.22