suvera-dev ๐Ÿฅฆ

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ Swift - ์ ‘๊ทผ์ œ์–ด ๋ณธ๋ฌธ

Language/Swift

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ Swift - ์ ‘๊ทผ์ œ์–ด

suvera 2023. 3. 31. 18:10

์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ๊ตฌ์กฐ์ฒด, ํด๋ž˜์Šค, ํ”„๋กœํผํ‹ฐ, ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ์งš์–ด๋ดค๋Š”๋ฐ์š”.

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ ‘๊ทผ์ œ์–ด์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ดค์Šต๋‹ˆ๋‹ค.

 

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์—์„œ ์ค‘์š”ํ•œ ๋‚ด์šฉ ์ค‘์— '์€๋‹‰ํ™”'๋ผ๋Š” ๊ฐœ๋…์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ธ ์ ‘๊ทผ์ œ์–ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


์ ‘๊ทผ์ œ์–ด 

- ์ฝ”๋“œ๋ผ๋ฆฌ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•  ๋•Œ ํŒŒ์ผ ๊ฐ„ ๋˜๋Š” ๋ชจ๋“ˆ ๊ฐ„์— ์ ‘๊ทผ์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ.

- ์ ‘๊ทผ์ œ์–ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ์ƒ์„ธ ๊ตฌํ˜„์€ ์ˆจ๊ธฐ๊ณ  ํ—ˆ์šฉ๋œ ๊ธฐ๋Šฅ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต.

 

์ ‘๊ทผ์ œ์–ด๊ฐ€ ์™œ ํ•„์š”ํ• ๊นŒ?

- ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์—์„œ ์ค‘์š”ํ•œ ์บก์Šํ™”์™€ ์€๋‹‰ํ™”๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์ด์œ ๋Š” ์™ธ๋ถ€์—์„œ ๋ณด๊ฑฐ๋‚˜ ์ ‘๊ทผํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ.

- ๋ถˆํ•„์š”ํ•œ ์ ‘๊ทผ์œผ๋กœ ์˜๋„์น˜ ์•Š์€ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•˜๊ฑฐ๋‚˜ ๊ผญ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์ œ๊ณตํ•ด์•ผํ•˜๋Š”๋ฐ ์ „์ฒด ์ฝ”๋“œ๊ฐ€ ๋…ธ์ถœ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์„ ๋•Œ ์ ‘๊ทผ์ œ์–ด๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค !

 


โš’๏ธ

 

์ตœ๊ทผ์— ํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ์—์„œ ๋ชจ๋“ˆํ™”๋ฅผ ์ ์šฉํ–ˆ๋Š”๋ฐ์š”.

์ ‘๊ทผ์ œ์–ด์™€ ๊ด€๋ จ๋œ ์—ฌ๋Ÿฌ ์ด์Šˆ๋“ค์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

ํ•˜๋‚˜์˜ ์•ฑ์ด ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค๋ณด๋‹ˆ๊นŒ,

๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ์‚ฌ์šฉ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š”์ง€ ๋ฏธ๋ฆฌ ํŒ๋‹จํ•˜๊ณ  

์ ‘๊ทผ์ œ์–ด ํ‚ค์›Œ๋“œ๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๋ชจ๋“ˆํ™”๋ฅผ ์ ์šฉํ•ด๋ณด์‹ค ์ƒ๊ฐ์ด๋ผ๋ฉด,

์ ‘๊ทผ์ œ์–ด๋Š” ์•„์ฃผ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋ผ๋Š” ์ƒ๊ฐ์ด ๋“œ๋„ค์š” !


๋ชจ๋“ˆ๊ณผ ์†Œ์ŠคํŒŒ์ผ 

- ์Šค์œ„ํ”„ํŠธ์˜ ์ ‘๊ทผ์ œ์–ด๋Š” ๋ชจ๋“ˆ๊ณผ ์†Œ์ŠคํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ๋Š”๋ฐ์š” !

 

๋ชจ๋“ˆ

- ๋ฐฐํฌํ•  ์ฝ”๋“œ์˜ ๋ฌถ์Œ ๋‹จ์œ„

- ํ†ต์ƒ ํ•˜๋‚˜์˜ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜.

- import ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.

 

์†Œ์ŠคํŒŒ์ผ 

- ํ•˜๋‚˜์˜ ์Šค์œ„ํ”„ํŠธ ์†Œ์Šค ์ฝ”๋“œ ํŒŒ์ผ

- ์ž๋ฐ”๋‚˜ ์˜ต์ ์”จ ๊ฐ™์€ ๊ธฐ์กด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋Š” ํ†ต์ƒ ํŒŒ์ผ ํ•˜๋‚˜์— ํƒ€์ž…์„ ํ•˜๋‚˜๋งŒ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

- ์Šค์œ„ํ”„ํŠธ์—์„œ๋„ ๊ทธ๋ ‡๊ธดํ•˜์ง€๋งŒ, ๋•Œ๋กœ๋Š” ใ……์ŠคํŒŒ์ผ ํ•˜๋‚˜์— ์—ฌ๋Ÿฌํƒ€์ž…์ด๋‚˜ ํ•จ์ˆ˜ ๋“ฑ ๋งŽ์€ ๊ฒƒ๋“ค์„ ์ •์˜/ ๊ตฌํ˜„ ํ•  ์ˆ˜ ์žˆ์–ด์š”.

 


 

์ ‘๊ทผ ์ˆ˜์ค€ Access Level

- ์ ‘๊ทผ์ œ์–ด๋Š” Access Level ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

- open, public, internal, fileprivate, private 5๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค !

- ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“ˆ๊ณผ ์†Œ์ŠคํŒŒ์ผ์— ๋”ฐ๋ผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

 

์ถœ์ฒ˜ : https://dev-jiwon.github.io/swift-grammar-13/

- ์œ„์˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ๋” ์ดํ•ด๊ฐ€ ์ž˜๋ฉ๋‹ˆ๋‹ค !

- private์—์„œ open์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ๋‹น์—ฐํžˆ ์ ‘๊ทผ๋„๊ฐ€ ๋†’๊ฒ ์ฃ .

 

์ถœ์ฒ˜ : https://velog.io/@toma

- ๊ธฐ๋Šฅ ์ •์˜ ๋‚ด๋ถ€๋ถ€ํ„ฐ ๋ชจ๋“ˆ ์™ธ๋ถ€๊นŒ์ง€ ์ ‘๊ทผ ๋ฒ”์œ„๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

1) public - ๊ณต๊ฐœ ์ ‘๊ทผ ์ˆ˜์ค€

- ์ž์‹ ์ด ๊ตฌํ˜„๋œ ์†Œ์ŠคํŒŒ์ผ, ์†Œ์ŠคํŒŒ์ผ์ด ์†ํ•ด ์žˆ๋Š” ๋ชจ๋“ˆ, ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ๋‹ค ์“ฐ๋Š” ๋ชจ๋“ˆ ๋“ฑ ๋ชจ๋“  ๊ณณ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.

- ์ฃผ๋กœ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์™ธ๋ถ€์™€ ์—ฐ๊ฒฐ๋  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์“ฐ์ž„.

 

2) open - ๊ฐœ๋ฐฉ ์ ‘๊ทผ ์ˆ˜์ค€

- public ์ด์ƒ์œผ๋กœ ๋†’์€ ์ ‘๊ทผ ์ˆ˜์ค€.

- ํด๋ž˜์Šค์™€ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ.

- public์ด๋ž‘ ๋ญ” ์ฐจ์ด ? open ํด๋ž˜์Šค๋Š” ๊ทธ ํด๋ž˜์Šค๊ฐ€ ์ •์˜๋œ ๋ชจ๋“ˆ ๋ฐ–์˜ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ๋„ ์ƒ์†ํ•  ์ˆ˜ ์žˆ๊ณ , open ํด๋ž˜์Šค ๋ฉค๋ฒ„๋Š” ํ•ด๋‹น ๋ฉค๋ฒ„๊ฐ€ ์ •์˜๋œ ๋ชจ๋“ˆ ๋ฐ–์˜ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ๋„ ์žฌ์ •์˜ ํ•  ์ˆ˜ ์žˆ์Œ.

- open ์ˆ˜์ค€์˜ ํด๋ž˜์Šค๋Š” ๊ทธ ํด๋ž˜์Šค๋ฅผ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ๋„ ๋ถ€๋ชจํด๋ž˜์Šค๋กœ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ๋ชฉ์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ์Œ์„ ์˜๋ฏธ.

 

3) internal - ๋‚ด๋ถ€ ์ ‘๊ทผ ์ˆ˜์ค€

- ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ์š”์†Œ์— ์•”๋ฌต์ ์œผ๋กœ ์ง€์ •ํ•˜๋Š” ๊ธฐ๋ณธ ์ ‘๊ทผ ์ˆ˜์ค€

- ์†Œ์ŠคํŒŒ์ผ ์†ํ•ด ์žˆ๋Š” ๋ชจ๋“ˆ ์–ด๋””์—์„œ๋“  ์“ฐ์ผ ์ˆ˜ ์žˆ๋‹ค.

- ๋‹ค๋งŒ ๊ทธ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ๋‹ค ์“ฐ๋Š” ์™ธ๋ถ€ ๋ชจ๋“ˆ์—์„œ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. 

- ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•  ํด๋ž˜์Šค๋‚˜ ๊ตฌ์กฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ฉฐ, ๋ชจ๋“ˆ ๋‚ด๋ถ€์—์„œ ๊ด‘์—ญ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์“ฐ์ž…๋‹ˆ๋‹ค.

 

4) fileprivate - ํŒŒ์ผ์™ธ๋ถ€๋น„๊ณต๊ฐœ ์ ‘๊ทผ ์ˆ˜์ค€

- ๊ทธ ์š”์†Œ๊ฐ€ ๊ตฌํ˜„๋œ ์†Œ์ŠคํŒŒ์ผ ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

- ํ•ด๋‹น ์†Œ์ŠคํŒŒ์ผ ์™ธ๋ถ€์—์„œ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ถ€์ž‘์šฉ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ.

 

5) private - ๋น„๊ณต๊ฐœ ์ ‘๊ทผ ์ˆ˜์ค€ 
- ๊ฐ€์žฅ ํ•œ์ •์ ์ธ ๋ฒ”์œ„

- ๊ทธ ๊ธฐ๋Šฅ์„ ์ •์˜ํ•˜๊ณ  ๊ตฌํ˜„ํ•œ ๋ฒ”์œ„ ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.

- ๊ฐ™์€ ์†Œ์ŠคํŒŒ์ผ ์•ˆ์— ๊ตฌํ˜„ํ•œ ๋‹ค๋ฅธ ํƒ€์ž…์ด๋‚˜ ๊ธฐ๋Šฅ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ


์ ‘๊ทผ์ œ์–ด ๊ตฌํ˜„ ์ฃผ์˜์‚ฌํ•ญ

- ์ƒ์œ„ ์š”์†Œ๋ณด๋‹ค ํ•˜์œ„ ์š”์†Œ๊ฐ€ ๋” ๋†’์€ ์ ‘๊ทผ ์ˆ˜์ค€์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค !

- ๊ตฌ์กฐ์ฒด ๋‚ด๋ถ€์— ๋” ๋†’์€ ์ ‘๊ทผ ์ˆ˜์ค€์„ ๊ฐ–๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ์ •์˜ํ•œ๋‹ค๊ฑฐ๋‚˜ ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํŠน์ • ํƒ€์ž…์ด ์ „๋‹ฌ๋˜๊ฑฐ๋‚˜ ๋ฐ˜ํ™˜๋œ๋‹ค๋ฉด, ๊ทธ ํƒ€์ž…์˜ ์ ‘๊ทผ ์ˆ˜์ค€๋ณด๋‹ค ํ•จ์ˆ˜์˜ ์ ‘๊ทผ ์ˆ˜์ค€์ด ๋†’๊ฒŒ ์„ค์ •๋  ์ˆ˜ ์—†์Œ.

- ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋“ค๋•Œ๋Š” ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ํŠน์ • ๊ธฐ๋Šฅ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก API๋กœ ์‚ฌ์šฉํ•  ๊ธฐ๋Šฅ์„ public์œผ๋กœ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•จ.

- ๊ทธ ์™ธ์˜ ์š”์†Œ๋Š” internal ํ˜น์€ private์œผ๋กœ

- enum ๋‚ด๋ถ€์˜ case ๋ณ„๋กœ ์ ‘๊ทผ์ˆ˜์ค€ ๋ถ€์—ฌํ•  ์ˆ˜ ์—†์Œ. 

- enum์˜ ์›์‹œ๊ฐ’ ํƒ€์ž…์œผ๋กœ ๋‚ฎ์€ ์ ‘๊ทผ์ˆ˜์ค€์˜ ํƒ€์ž…์ด ์˜ฌ์ˆ˜ ์—†์Œ.

 

์ฝ๊ธฐ ์ „์šฉ ๊ตฌํ˜„

- ๊ตฌ์กฐ์ฒด ๋˜๋Š” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ๋Š” ํ—ˆ์šฉ๋œ ์ ‘๊ทผ ์ˆ˜์ค€์—์„œ ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ์Œ.

- ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋„๋ก ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ? ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ๋„ ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ œํ•œํ•˜๋ ค๋ฉด ?

= ์„ค์ •์ž๋งŒ ๋” ๋‚ฎ์€ ์ ‘๊ทผ ์ˆ˜์ค€์„ ๊ฐ–๋„๋ก ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค. ์š”์†Œ์˜ ์ ‘๊ทผ ์ˆ˜์ค€ ํ‚ค์›Œ๋“œ ๋’ค์— (set)์„ ๋ถ™์—ฌ ํ‘œํ˜„.

public struct SomeType {
    // ๋น„๊ณต๊ฐœ ์ ‘๊ทผ์ˆ˜์ค€ ์ €์žฅ ํ”„๋กœํผํ‹ฐ count
    private var count: Int = 0
    
    // ๊ณต๊ฐœ ์ ‘๊ทผ์ˆ˜์ค€ ์ €์žฅ ํ”„๋กœํผํ‹ฐ publicStoredProperty
    public var publicStoredProperty: Int = 0
    
    // ๊ณต๊ฐœ ์ ‘๊ทผ์ˆ˜์ค€ ์ €์žฅ ํ”„๋กœํผํ‹ฐ publicGetOnlyStoredProperty
    // ์„ค์ •์ž๋Š” ๋น„๊ณต๊ฐœ ์ ‘๊ทผ์ˆ˜์ค€
    public private(set) var publicGetOnlyStoredProperty: Int = 0
    
    // ๋‚ด๋ถ€ ์ ‘๊ทผ์ˆ˜์ค€ ์ €์žฅ ํ”„๋กœํผํ‹ฐ internalComputedProperty
    internal var internalComputedProperty: Int {
        get {
            return count
        }
        
        set {
            count += 1
        }
    }
    
    // ๋‚ด๋ถ€ ์ ‘๊ทผ์ˆ˜์ค€ ์ €์žฅ ํ”„๋กœํผํ‹ฐ internalGetOnlyComputedProperty
    // ์„ค์ •์ž๋Š” ๋น„๊ณต๊ฐœ ์ ‘๊ทผ์ˆ˜์ค€
    internal private(set) var internalGetOnlyComputedProperty: Int {
        get {
            return count
        }
        
        set {
            count += 1
        }
    }
    
    // ๊ณต๊ฐœ ์ ‘๊ทผ์ˆ˜์ค€ ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ
    public subscript() -> Int {
        get {
            return count
        }
        
        set {
            count += 1
        }
    }
    
    // ๊ณต๊ฐœ ์ ‘๊ทผ์ˆ˜์ค€ ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ
    // ์„ค์ •์ž๋Š” ๋‚ด๋ถ€ ์ ‘๊ทผ์ˆ˜์ค€
    public internal(set) subscript(some: Int) -> Int {
        get {
            return count
        }
        
        set {
            count += 1
        }
    }
}

var someInstance: SomeType = SomeType()

// ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์ž, ์„ค์ •์ž ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
print(someInstance.publicStoredProperty) // 0
someInstance.publicStoredProperty = 100

// ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์ž๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
print(someInstance.publicGetOnlyStoredProperty) // 0
//someInstance.publicGetOnlyStoredProperty = 100 // ์˜ค๋ฅ˜ ๋ฐœ์ƒ

// ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์ž, ์„ค์ •์ž ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
print(someInstance.internalComputedProperty) // 0
someInstance.internalComputedProperty = 100

// ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์ž๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
print(someInstance.internalGetOnlyComputedProperty) // 1
//someInstance.internalGetOnlyComputedProperty = 100 // ์˜ค๋ฅ˜ ๋ฐœ์ƒ

// ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์ž, ์„ค์ •์ž ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
print(someInstance[]) // 1
someInstance[] = 100

// ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์ž๋งŒ, ๊ฐ™์€ ๋ชจ๋“ˆ ๋‚ด์—์„œ๋Š” ์„ค์ •์ž๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
print(someInstance[0]) // 2
someInstance[0] = 100

 

 

์ถœ์ฒ˜ : ์•ผ๊ณฐ๋‹˜์˜ Swift ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฑ…

 

 

 

Comments