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

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

[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.
[Swift] split๊ณผ components์˜ ์ฐจ์ด์  split์ด components๋ณด๋‹ค ์„ฑ๋Šฅ์ด ์ข‹๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊นจ๋‹ซ๊ณ ,, ๋‘˜์˜ ์ฐจ์ด์ ์„ ๊ณต๋ถ€ํ•ด๋ณด๋ คํ•œ๋‹ค. ๐Ÿถ ๐Ÿ“Ž components ๋จผ์ € components์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์•Œ์•„๋ณด์ž. ๊ณต์‹ ๊ฐœ๋ฐœ๋ฌธ์„œ์—์„œ components์˜ ์„ค๋ช…์„ ๊ฐ€์ ธ์™”๋‹ค. โœ”๏ธ ๋ฆฌํ„ด ํƒ€์ž… String์„ ์ž…๋ ฅ๋ฐ›๊ณ , separator๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆˆ [String]์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. โœ”๏ธ ํ”„๋ ˆ์ž„์›Œํฌ Foundation ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ importํ•ด์ค˜์•ผ๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. โœ”๏ธ ํŒŒ๋ผ๋ฏธํ„ฐ separator ํ•˜๋‚˜๋งŒ์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ฐ€์ง„๋‹ค. ๐Ÿ“Ž split ์ด๋ฒˆ์—” split์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฒจ๋ถ€ํ–ˆ๋‹ค. โœ”๏ธ ๋ฆฌํ„ด ํƒ€์ž… Character๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ , [Substring] ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. โœ”๏ธ ํ”„๋ ˆ์ž„์›Œํฌ Swift ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ.. 2021. 8. 8.
[Swift] ๋ฐฐ์—ด ๊ด€๋ จ ํ•จ์ˆ˜ ์ด์ •๋ฆฌ! ์Šค์œ„ํ”„ํŠธ๋Š” ์—†๋Š” ํ•จ์ˆ˜๊ฐ€ ์—†๋‹ค,, ํ•จ์ˆ˜๋“ค์„ ์ž˜ ์ˆ™์ง€ํ•˜๊ณ  ์žˆ์œผ๋ฉด ๋„ˆ๋ฌด ํŽธํ•˜๋‹ค ์ •๋ง๋ฃจ ๋”ฐ๋ผ์„œ ์˜ค๋Š˜๋ถ€ํ„ฐ ํ•จ์ˆ˜๋“ค์„ ๋ณด๊ธฐ์ข‹๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ตฌํ•œ๋‹ค. ์ƒ๊ฐ๋‚˜๋Š”๋Œ€๋กœ ๊ณ„์† ์ถ”๊ฐ€ํ•  ์˜ˆ์ •! (์—ฌ๊ธฐ์—” ํ•จ์ˆ˜๋“ค์„ ๋ชจ๋‘ ๊ธฐ๋กํ•˜๊ณ , ํ•„์š”์— ๋”ฐ๋ผ ํ•จ์ˆ˜๋ณ„ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋”ฐ๋กœ ๊ธ€์„ ์—…๋กœ๋“œํ•˜๊ฒ ๋‹ค.) ๐Ÿ“Œ ์ •๋ ฌ ๐Ÿ‘‰ sorted, sort, reverse var arr1 = [1, 2, 5, 4, 3] var arr2 = [1, 2, 5, 4, 3] var arr3 = [1, 2, 5, 4, 3] arr1.sorted() // ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ (์˜ค๋ฆ„์ฐจ์ˆœ์ด default๋ผ์„œ ๋นˆ ๊ด„ํ˜ธ ๊ฐ€๋Šฅ) arr1.sorted(by: ) // ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ arr2.sorted(){$0 > $1} // ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ arr2.sorted{$0 > $1} // ์˜ค๋ฆ„์ฐจ์ˆœ .. 2021. 7. 15.