๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

3๏ธโƒฃ Swift130

[Swift] ํ”„๋กœํผํ‹ฐ ๊ฐœ๋… ์ •๋ฆฌ (2); ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ ์ €๋ฒˆ ์ €์žฅ ํ”„๋กœํผํ‹ฐ ํฌ์ŠคํŒ…์— ์ด์–ด์„œ ์˜ค๋Š˜์€ ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค,, ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋Š” ๋ณ€์ˆ˜, ์ƒ์ˆ˜์— ๋Œ€ํ•œ ๊ฐœ๋…์œผ๋กœ ๊ทธ๋‚˜๋งˆ ์‰ฌ์šด? ํŽธ์ด์—ˆ๋Š”๋ฐ ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋Š” ๋น„๊ต์  ์–ด๋ ค์› ๋‹น. ๊ฐ™์ด ๊ณต๋ถ€ํ•ด๋ณด์Ÿˆ.. ๐Ÿ“Ž ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ (Computed Properties) ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์ €์žฅ ํ”„๋กœํผํ‹ฐ์™€ ๋‹ฌ๋ฆฌ ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋Š” ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์ด ์—†๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์—ฐ์‚ฐ์„ ํ•˜๊ณ  ์ ์ ˆํ•œ ๊ฐ’์„ ๋Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ๊ตฌ์กฐ์ฒด, ํด๋ž˜์Šค, ์—ด๊ฑฐํ˜• ๋ชจ๋‘์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ  ์ ‘๊ทผ์ž(getter), ์„ค์ •์ž(setter)๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์–ด๋– ํ•œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์—ฐ์‚ฐ, ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ๋ถ€๋ถ„์—์„œ ๋ฉ”์„œ๋“œ์™€ ๋น„์Šทํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋Š”๋ฐ ๋ฉ”์„œ๋“œ ๋Œ€์‹  ์ด ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ ์„ ์•Œ์•„๋ณด๋ฉด, 1) ๋ฉ”์„œ๋“œ์˜ ๊ฒฝ์šฐ ์œ„์—์„œ ๋งํ•œ .. 2021. 9. 22.
[Swift] ํ”„๋กœํผํ‹ฐ ๊ฐœ๋… ์ •๋ฆฌ (1); ์ €์žฅ ํ”„๋กœํผํ‹ฐ ํ”„๋กœํผํ‹ฐ๋ผ๊ณ  ํ•˜๋ฉด ํด๋ž˜์Šค๋‚˜ ๊ตฌ์กฐ์ฒด์—์„œ ์“ฐ๋Š” ๋ณ€์ˆ˜, ์ƒ์ˆ˜,,? ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์ด์ง€๋งŒ ์ •ํ™•ํžˆ ์„ค๋ช…ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.ใ…œ ์ถ”์„์„ ๋งž์•„ ์ด๋Ÿฐ ๊ฐœ๋…๋“ค์„ ํƒ„ํƒ„ํžˆํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋ คํ•œ๋‹ค.๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ํ”„๋กœํผํ‹ฐ๋Š” ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ๋“ฑ์— ๊ด€๋ จ๋œ ๊ฐ’์„ ๋œปํ•˜๊ณ , ๊ทธ ์ข…๋ฅ˜๋Š” ์ €์žฅ ํ”„๋กœํผํ‹ฐ, ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ, ํƒ€์ž… ํ”„๋กœํผํ‹ฐ๋กœ ํฌ๊ฒŒ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ“Ž ์ €์žฅ ํ”„๋กœํผํ‹ฐ (Stored Properties) ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋Š” ํด๋ž˜์Šค๋‚˜ ๊ตฌ์กฐ์ฒด์—์„œ ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ํ”„๋กœํผํ‹ฐ์ด๋‹ค. ๐Ÿ“Œ ์ €์žฅ ํ”„๋กœํผํ‹ฐ์˜ ๊ธฐ๋ณธ ํ˜•ํƒœ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ์˜ ์ €์žฅ ํ”„๋กœํผํ‹ฐ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ–ˆ๋‹ค. struct Info1_sp { let name: String = "์„คํฌ" // ์ƒ์ˆ˜ ์ €์žฅ ํ”„๋กœํผํ‹ฐ var age: Int = 0 // ๋ณ€์ˆ˜ ์ €์žฅ ํ”„๋กœํผํ‹ฐ } clas.. 2021. 9. 22.
[Swift] ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ , ๊ฐ’ ์บก์ณ(Capturing Value) ํด๋กœ์ €๋Š” ์Šค์œ„ํ”„ํŠธ์—์„œ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์ด์ง€๋งŒ,, ์ •๋ง ์–ด๋ ค์šด ๊ฐœ๋…์ด๊ธฐ๋„ ํ•˜๋‹ค. ์ด์ „ ๊ธ€์—์„œ ํด๋กœ์ €์˜ ๊ธฐ์ดˆ์ ์ธ ๋‚ด์šฉ์— ๋Œ€ํ•ด ๋‹ค๋ค˜๋Š”๋ฐ, ์˜ค๋Š˜์€ ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ ์ €๋ฒˆ ๊ธ€์—์„œ๋Š” ๋‹ค๋ฃจ์ง€ ๋ชปํ•œ ๊ฐ’ ์บก์ณ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๐Ÿ“Ž ํด๋กœ์ € ์‚ฌ์šฉ ๋ชฉ์  ํด๋กœ์ €๋Š” ์ฝ”๋“œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š”๋ฐ์— ํฐ ๋„์›€์„ ์ค€๋‹ค. ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์—๋Š” ์•„์ฃผ ๋‹ค์–‘ํ•œ ๋ชฉ์ ์ด ์žˆ๊ฒ ์ง€๋งŒ, ๊ทธ ์ค‘์—์„œ๋„ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ณ , ๋งŽ์ด ์“ฐ์ด๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค. #1 higher order function ์ธํ’‹์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ๋œปํ•œ๋‹ค. ๋ฐ”๋กœ ๊ณ ์ฐจํ•จ์ˆ˜,!! ์ธํ’‹์œผ๋กœ ์ค„ ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ทธ ์ž๋ฆฌ์—์„œ ๋ฐ”๋กœ ํด๋กœ์ €๋กœ ๋งŒ๋“ค์–ด ์ธํ’‹์„ ์ค„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด ๋•Œ ํด๋กœ์ €๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. #2 completi.. 2021. 9. 11.
[Swift] guard / if (feat. ์˜ต์…”๋„ ๋ฐ”์ธ๋”ฉ) ์Šค์œ„ํ”„ํŠธ์—๋Š” if์™€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•˜๋Š” guard๋ผ๋Š” ๊ฒƒ์ด ์กด์žฌํ•œ๋‹ค,,! ์ง€๊ธˆ๊นŒ์ง€๋Š” guard๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ํ•„์š”์„ฑ์„ ๋Š๋ผ์ง€ ๋ชปํ•ด ๊ณต๋ถ€ํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ, ์ด์œ ์—†๋Š” ๊ตฌ๋ฌธ์ด ์กด์žฌํ• ๋ฆฌ๋Š” ์—†๋‹ค. ์˜ค๋Š˜์€ ์˜ต์…”๋„ ๋ฐ”์ธ๋”ฉ์— ๋Œ€ํ•ด ๊นŠ์ด์žˆ๊ฒŒ ๊ณต๋ถ€ํ•ด๋ณด๋‹ค๊ฐ€ guard ๊ตฌ๋ฌธ์˜ ์ข‹์€ ์ธก๋ฉด์„ ์•Œ๊ฒŒ ๋˜์–ด guard๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ• ์ง€, if์™€๋Š” ์–ด๋–ค ์ฐจ์ด์ ์ด ์žˆ๋Š”์ง€ ๋“ฑ์„ ์•Œ์•„๋ณด๋ คํ•œ๋‹ค. ๐Ÿ“Ž guard guard๋Š” '๋น ๋ฅธ ์ข…๋ฃŒ'์˜ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ์ด๋‹ค. if ๊ตฌ๋ฌธ์€ "~๋ฉด ~ํ•ด๋ผ!" ๋ผ๋Š” ์˜๋ฏธ์ด์ง€๋งŒ, guard ๊ตฌ๋ฌธ์€ "~์•„๋‹ˆ๋ฉด ๋๋‚ด๋ผ!" ๋ผ๋Š” ์˜๋ฏธ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์šฐ์„  guard ๊ตฌ๋ฌธ์˜ ๊ธฐ๋ณธ ํ˜•ํƒœ๋ฅผ ๋ณด์ž. // ํ•จ์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ, ๋ฐ˜๋ณต๋ฌธ ๋“ฑ ๋ธ”๋ก ๋‚ด๋ถ€์— ์„ ์–ธ guard (Bool ํƒ€์ž… ๊ฐ’) else { (์˜ˆ์™ธ์‚ฌํ•ญ ์‹คํ–‰๋ฌธ) (์ œ์–ด๋ฌธ ์ „.. 2021. 9. 6.
[Swift] inout ํŒŒ๋ผ๋ฏธํ„ฐ ์ง€๊ธˆ๊นŒ์ง€๋Š” swift ํ•จ์ˆ˜์—์„œ ๋ฐ›์•„์˜ค๋Š” ์ธ์ž๊ฐ’์€ ์ƒ์ˆ˜๋กœ ์“ฐ์ธ๋‹ค๋Š” ์ ๋งŒ ์ธ์ง€ํ•˜๊ณ  ๊ฐ’์˜ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•  ๋•Œ๋Š” ํ•จ์ˆ˜ ์•ˆ์— ๋ณ€์ˆ˜๋กœ ๋‹ค์‹œ ์„ ์–ธํ•˜์—ฌ ์—ฐ์‚ฐ์„ ํ•ด์ฃผ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์˜ค๋Š˜์—์„œ์•ผ,, ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ๊ณ , ๊ธ€์„ ์ž‘์„ฑํ•œ๋‹ค. ๐Ÿ“Ž inout ํŒŒ๋ผ๋ฏธํ„ฐ ์Šค์œ„ํ”„ํŠธ ์‚ฌ์šฉ์ž๋ผ๋ฉด ๋ชจ๋‘ ์•Œ๋งŒํ•œ ์‚ฌ์‹ค์ด์ง€๋งŒ C, Java ๋“ฑ ๋‹ค๋ฅธ ์–ธ์–ด๋“ค๊ณผ ๋‹ฌ๋ฆฌ ์Šค์œ„ํ”„ํŠธ๋Š” ํ•จ์ˆ˜๊ฐ€ ์ƒ์ˆ˜ ํ˜•ํƒœ๋กœ ์ธ์ž๋ฅผ ๋ฐ›์•„์˜จ๋‹ค. ๋”ฐ๋ผ์„œ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์ธ์ž๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์œ„์™€ ๊ฐ™์ด n์ด let ์ƒ์ˆ˜์ด๋ฉฐ mutable ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์ˆ˜ ์•ˆ์—์„œ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ณ€์ˆ˜ ์ž์ฒด์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์ฃผ๊ณ ์ž ํ•  ๋•Œ! ๋ฐ”๋กœ inout ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค. inout ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ va.. 2021. 9. 5.