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

3๏ธโƒฃ Swift/Swift ์ •๋ฆฌ20

[Swift] ํด๋กœ์ €(Closure) ์ •๋ฆฌ (feat. sorted) swift๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ์•„์ฃผ ๋งŽ์ด ์“ฐ๋Š”๊ฒŒ ํด๋กœ์ €์ธ ๊ฒƒ ๊ฐ™๊ณ ,, ๊ฐœ์ธ์ ์ธ ์ƒ๊ฐ์œผ๋กœ๋Š” ์Šค์œ„ํ”„ํŠธ์˜ ๋ชจ๋“  ๋ฌธ๋ฒ•?์ค‘์— ๊ฐ€์žฅ ์ค‘์š”ํ•œ๊ฒŒ ๋ฐ”๋กœ ํด๋กœ์ €๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค,,!! ํ•˜์ง€๋งŒ ์•„์ง ์ •ํ™•ํ•œ ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒƒ ๊ฐ™๋‹ค.ใ…œ ๋”ฐ๋ผ์„œ ์˜ค๋Š˜์€ ํด๋กœ์ €์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๊ณต๋ถ€ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๐Ÿ“Ž ํด๋กœ์ €(Closure) ํด๋กœ์ €๋Š” ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์˜ '๋žŒ๋‹ค'์™€ ๋น„์Šทํ•œ ๊ฐœ๋…์œผ๋กœ, ์ผ์ • ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜์˜ ๋ธ”๋ก์œผ๋กœ ๋ชจ์•„๋†“์€ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด ์–˜๊ธฐ๋ฅผ ๋“ค์œผ๋ฉด ํ•จ์ˆ˜์•„๋ƒ?ํ•˜๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ํ•จ์ˆ˜๋„ ํด๋กœ์ €์˜ ์ผ์ข…์ด๋‹ค. ๐Ÿ‘‰ ํด๋กœ์ €์—๋Š” ํฌ๊ฒŒ ์ด ์„ธ ๊ฐ€์ง€ ํ˜•ํƒœ๊ฐ€ ์žˆ๋‹ค. ์ด๋ฆ„์ด ์žˆ์œผ๋ฉด์„œ ์–ด๋–ค ๊ฐ’๋„ ํš๋“ํ•˜์ง€ ์•Š์Œ - ์ „์—ญํ•จ์ˆ˜์˜ ํ˜•ํƒœ ์ด๋ฆ„์ด ์žˆ์œผ๋ฉด์„œ ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ๋‚ด๋ถ€ ๊ฐ’์„ ํš๋“ํ•  ์ˆ˜ ์žˆ์Œ - ์ค‘์ฒฉ๋œ ํ•จ์ˆ˜์˜ ํ˜•ํƒœ ์ด๋ฆ„์ด ์—†๊ณ  ์ถ•์•ฝ ๋ฌธ๋ฒ•์œผ๋กœ ์“ฐ์—ฌ์ง€๋ฉฐ ์ฃผ๋ณ€ ๋ฌธ๋งฅ์— .. 2021. 6. 30.
[Swift] ์ผ๊ธ‰ ๊ฐ์ฒด (First-class Citizen) ์ •๋ฆฌ ๊ณ ์ฐจํ•จ์ˆ˜, ํด๋กœ์ €์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋ ค๋‹ˆ '์ผ๊ธ‰ ๊ฐ์ฒด'์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๊ฐ€ ๋งŽ์ด ๋“ฑ์žฅํ•œ๋‹ค. ์ •ํ™•ํžˆ ๊ฐœ๋…์„ ์ˆ™์ง€ํ•˜์ง€ ๋ชปํ•œ ์ƒํƒœ์—์„œ ํด๋กœ์ €์™€ ๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์™”์ง€๋งŒ, ํ™•์‹คํ•˜๊ฒŒ ์ •๋ฆฌํ•˜์ง€ ์•Š๊ณ  ๋„˜์–ด๊ฐ€๋‹ˆ ๋‚ด์šฉ์ด ๊นŠ์–ด์งˆ์ˆ˜๋ก ์ดํ•ด๊ฐ€ ์–ด๋ ค์›Œ์ง€๋Š”๋“ฏ ํ•˜์—ฌ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๐Ÿ“Ž ์ผ๊ธ‰ ๊ฐ์ฒด (First-class Citizen) ์ผ๊ธ‰ ๊ฐ์ฒด๋Š” ์ด๋ฆ„๋งŒ ๋“ค์–ด๋ณด๋ฉด ์ œ์ผ ๋›ฐ์–ด๋‚œ?.. ๊ฐ์ฒด์ธ๊ฐ€ ํ•˜๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ, ์˜คํžˆ๋ ค ๊ธ‰์ด ํ•˜๋‚˜์ธ ๊ฐ์ฒด! ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ๋” ์ ํ•ฉํ•˜๋‹ค. ๐Ÿ‘‰ ์•„๋ž˜๋Š” ์ผ๊ธ‰ ๊ฐ์ฒด๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ์ถฉ์กฑ ์กฐ๊ฑด์ด๋‹ค. ์ „๋‹ฌ ์ธ์ž๋กœ ์ „๋‹ฌ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ณ€์ˆ˜๋‚˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์•ˆ์— ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜ํ™˜ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. ์œ„์˜ ๋‚ด์šฉ์„ ๋ณด๋ฉด ์ข€ ์–ด๋ ค์›Œ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ,, ํ•œ ๋งˆ๋””๋กœ ์š”์•ฝํ•˜์ž๋ฉด, ๊ทธ๋ƒฅ ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด.. 2021. 6. 24.
[Swift] sorted, joined ํ•จ์ˆ˜ ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ ์‚ฌํ•ญ! ๋‚ด๊ฐ€ ๋ฌธ์ž์—ด ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๊ฐ€ sorted์™€ joined๋ฅผ ํ•จ๊ป˜ ์“ฐ๋ ค๊ณ  ํ•˜๋‹ˆ ์˜ค๋ฅ˜๊ฐ€ ๋œจ๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. ๊ทผ๋ฐ ๊ทธ ์ด์œ ๋ฅผ ๋„๋Œ€์ฒด ์•Œ ์ˆ˜๊ฐ€ ์—†์–ด์„œ ํ•œ์ฐธ์„ ๊ณ ๋ฏผํ–ˆ๋‹ค,, ๊นจ๋‹ซ๊ณ  ๋‚˜๋‹ˆ ๊ฐ„๋‹จํ•œ ๋‚ด์šฉ์ด์—ˆ์ง€๋งŒใ…œ ์•ž์œผ๋กœ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ํ™•์‹คํ•˜๊ฒŒ ์•Œ๊ณ  ์‚ฌ์šฉํ•˜์ž๋Š” ๋ฐ˜์„ฑ์˜ ์˜๋ฏธ์—์„œ ๊ธ€์„ ์ž‘์„ฑํ•ด๋ณด๋ ค ํ•œ๋‹ค. ๐Ÿ“Ž ๋‚ด๊ฐ€ ํ•˜๊ณ  ์‹ถ์—ˆ๋˜ ์ž‘์—…์€ ๋ฌธ์ž์—ด์„ ์ •๋ ฌํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ. ํ•˜์ง€๋งŒ ๋ฌธ์ž์—ด์„ ์ •๋ ฌํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ ๋ฐฐ์—ด์„ ๋‹ค์‹œ ๋ฌธ์ž์—ด๋กœ joinedํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์ด๋ ‡๊ฒŒ,,!! (๋ฌผ๋ก  String(String(num).sorted())๋กœ ํ•ด์ฃผ๋ฉด ์ถฉ๋ถ„ํ•˜์ง€๋งŒ, ํ•œ ๋ฒˆ ์‹œ๋„ํ•ด๋ดค๋‹ค๊ฐ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ๊ถ๊ธˆํ•ด์ ธ๋ฒ„๋ ธ๋‹ค,,) ๋‚ด๊ฐ€ ์—ฌ๊ธฐ์„œ ์ด ์˜ค๋ฅ˜์˜ ์›์ธ์„ ์ฐพ๋Š”๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋˜ ์ด์œ ๋Š”, ๋ถ„๋ช… joined๋Š” [String] ํƒ€์ž…์˜ ์ž…๋ ฅ ๊ฐ’์„ ์ฒ˜.. 2021. 6. 13.
[Swift] ์˜ต์…”๋„ ์ถ”์ถœ (๊ฐ•์ œ ์ถ”์ถœ, ์˜ต์…”๋„ ๋ฐ”์ธ๋”ฉ, ์˜ต์…”๋„ ์ฒด์ด๋‹) ์ •๋ฆฌ ๋‚ด ๋ธ”๋กœ๊ทธ ์ฒซ ๊ธ€๋กœ ์˜ต์…”๋„์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์—…๋กœ๋“œํ–ˆ์—ˆ๋‹ค. ๊ทธ๋•Œ ์†Œ๊ฐœํ•˜๊ธฐ๋ฅผ, ๋‚ด๊ฐ€ ์Šค์œ„ํ”„ํŠธ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋‹ค๋ณด๋‹ˆ ?์™€ !๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค๊ณ  ํ–ˆ๋˜ ๊ธฐ์–ต,, ๊ทธ ๋‚ ์€ ?์— ๋Œ€ํ•ด์„œ ์†Œ๊ฐœ๋ฅผ ํ–ˆ๋‹ค๋ฉด ๊ทธ์— ์ด์–ด ์˜ค๋Š˜์€ !์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์˜ต์…”๋„์ธ ๊ฐ’์„ ์˜ต์…”๋„์ด ์•„๋‹Œ ๊ฐ’์œผ๋กœ ์ถ”์ถœํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•๋“ค์„ ์ •๋ฆฌํ•ด๋ณด์ž! (์˜ต์…”๋„์— ๋Œ€ํ•ด ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„์ด๋ผ๋ฉด ์—ฌ๊ธฐ๐Ÿ‘‡๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”!) 2021.06.06 - [๐Ÿ“ Swift Note/๐Ÿ“‹ Concept Summary] - [Swift] Optional(์˜ต์…”๋„) ์ •๋ฆฌ [Swift] Optional(์˜ต์…”๋„) ์ •๋ฆฌ ์Šค์œ„ํ”„ํŠธ ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค ๋ณด๋‹ˆ ?, ๊ทธ๋ฆฌ๊ณ  ! ์ด๋Ÿฐ ๋ฌธ์žฅ ๋ถ€ํ˜ธ๋“ค์ด ๋“ฑ์žฅํ•œ๋‹ค. ์˜ค๋Š˜์€ ๊ทธ ์ค‘ ?์— ๋Œ€ํ•ด ๋จผ์ € ์„ค๋ช…ํ•ด ๋ณด๋ ค ํ•œ๋‹ค. ๐Ÿ“Ž ์˜ต์…”๋„ ์Šค์œ„ํ”„ํŠธ๊ฐ€ ๊ฐ€์ง€๋Š” ๋Œ€ํ‘œ์ ์ธ ํŠน์ง•์œผ๋กœ ์•ˆ์ „์„ฑ์ด.. 2021. 6. 12.
[Swift] Type Annotation๊ณผ Type Inference (ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜๊ณผ ํƒ€์ž… ์ถ”๋ก ) ์Šค์œ„ํ”„ํŠธ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค๋ณด๋ฉด ๊ฐ€๋” Type Annotation์— ๊ด€ํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ตฌ๊ธ€๋ง ํ•  ๋•Œ๋„ ์–ด๋…ธํ…Œ์ด์…˜์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋งŽ์ด ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ƒฅ ๋ฌธ๋งฅ ์ƒ ๋ณ€์ˆ˜ ์ƒ์„ฑ์‹œ ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค๊ณ  ์ดํ•ดํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์˜ค๋Š˜์€ ์Šค์œ„ํ”„ํŠธ์˜ Type Annotation๊ณผ Inference์— ๋Œ€ํ•ด ์ •ํ™•ํžˆ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๐Ÿ“Ž Type Annotation (ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜) ์Šค์œ„ํ”„ํŠธ์—์„œ๋Š” ๋ณ€์ˆ˜ ํ˜น์€ ์ƒ์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ณ€์ˆ˜ ์„ ์–ธ ์‹œ์—๋Š” var [๋ณ€์ˆ˜๋ช…]: [๋ฐ์ดํ„ฐ ํƒ€์ž…] = [๊ฐ’]์˜ ํ˜•ํƒœ๋กœ, ์ƒ์ˆ˜ ์„ ์–ธ ์‹œ์—๋Š” let [์ƒ์ˆ˜๋ช…]: [๋ฐ์ดํ„ฐ ํƒ€์ž…] = [๊ฐ’]์˜ ํ˜•ํƒœ๋กœ ์ƒ์„ฑํ•œ๋‹ค. // ๋ณ€์ˆ˜ ์ƒ์„ฑ var a1: Int var a2: Int = 0 // ์ƒ์ˆ˜ ์ƒ์„ฑ let b1: Int let.. 2021. 6. 11.