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

study iOS๐ŸŽ/์ฃผ์ ‘ Swift - swift ํ…Œ๋งˆ

[Too Swfit] ์‹œ์ฆŒ1 4ํšŒ. ์Šค์œ„ํ”„ํŠธ์˜ ์บ๋ฆญํ„ฐ๋ฅผ ์•Œ๊ณ ์‹ถ์–ด. Want to know Swift's character 1. 'Character' type ๋ฌธ์ž representation ์ฒด๊ณ„ ์ค‘์—๋Š” ASCII๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์Šคํ‚ค๋Š” ๋ฌธ์ž๋ฅผ 7๋น„ํŠธ๋กœ ํ‘œํ˜„ํ•˜๋Š” ์ตœ๋Œ€ 128๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ฒด๊ณ„์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์— ๋Œ€ํ•œ super (char) set์œผ๋กœ ๋‚˜์˜จ UTF-8์€ ์ด ์•„์Šคํ‚ค ํ‘œํ˜„ ๊ด€๊ณ„๋ฅผ ๊ทธ๋Œ€๋กœ ์ƒ์†ํ•œ์ฑ„๋กœ, ๋ฌธ์ž ์ŠคํŽ™ํŠธ๋Ÿผ์„ ๋„“ํžŒ ์บ๋ฆญํ„ฐ ์„ธํŠธ์ž…๋‹ˆ๋‹ค. 2. Operation on Character // ์ด๊ฑฐ ๊ณต๋ฐฑ๋ฌธ์ž ๋งž๋‹ˆ? let space: Character = " " space.isWhitespace -> true or false // ์ด ์บ๋ฆญํ„ฐ๋Š” ์•„์Šคํ‚ค ์ฒด๊ณ„์— ์žˆ๋Š” ๊ฑฐ๋‹ˆ? let aChar = "a" aChar.isASCII // ์ด๊ฑฐ 16์ง„๋ฒ• ํ‘œํ˜„ํ•˜๋Š” ์ฒด๊ณ„ ์ค‘ ํ•˜๋‚˜๋‹ˆ( 0-9, a.. ๋”๋ณด๊ธฐ
[Too Swift] ์‹œ์ฆŒ1 2ํ™” How Swift deals with Strings ์Šค์œ„ํ”„ํŠธ๊ฐ€ ์ŠคํŠธ๋ง์„ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ• 1. A String as a collection of a Grapheme cluster or clusters : ์Šค์œ„ํ”„ํŠธ์—๊ฒŒ ์ŠคํŠธ๋ง์€ ๊ทธ๋ž˜ํ•Œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ปฌ๋ ‰์…˜์ด๋‹ค. let cafeNormal = "café" let cafeCombined = "cafe\u{0301}" // \u0000001100000001 => hexacoded unicode code point ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์—์„œ ์ฒซ ๋ฒˆ์งธ ์ƒ์ˆ˜์˜ ๋‘ ๋ฒˆ์งธ ์ƒ์ˆ˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ƒ ์ฝ”๋“œ ํฌ์ธํŠธ ๊ฐฏ์ˆ˜๋Š” 4๊ฐœ์™€ 5๊ฐœ๋กœ ์ƒ์ดํ•˜๋‚˜, ์Šค์œ„ํ”„ํŠธ๋Š” ์˜์–ด ์•ŒํŒŒ๋ฒณ e์™€ ๋ฐœ์Œ๊ธฐํ˜ธ๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ฌถ์–ด ํ•˜๋‚˜์˜ ์บ๋ฆญํ„ฐ๋กœ ๋ด…๋‹ˆ๋‹ค. // ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— cafeNormal.unicodeScalars.count // 4 cafeCombining.unicodeScalars.count // 5 ๋”๋ณด๊ธฐ
[Too Swift] ์‹œ์ฆŒ1 2ํ™” How Swift deals with Strings ์Šค์œ„ํ”„ํŠธ๊ฐ€ ์ŠคํŠธ๋ง์„ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ• : ๋„ˆ๋ฌด ์ค‘์š”ํ•œ ์ž๋ฃŒํ˜• !! 1. [ A String as a collection of a Grapheme cluster or clusters ] : ์Šค์œ„ํ”„ํŠธ์—๊ฒŒ ์ŠคํŠธ๋ง์€ ๊ทธ๋ž˜ํ•Œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ปฌ๋ ‰์…˜์ด๋‹ค. let cafeNormal = "café" let cafeCombined = "cafe\u{0301}" // \u0000001100000001 => hexacoded unicode code point ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์—์„œ ์ฒซ ๋ฒˆ์งธ ์ƒ์ˆ˜์˜ ๋‘ ๋ฒˆ์งธ ์ƒ์ˆ˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ƒ ์ฝ”๋“œ ํฌ์ธํŠธ ๊ฐฏ์ˆ˜๋Š” 4๊ฐœ์™€ 5๊ฐœ๋กœ ์ƒ์ดํ•˜๋‚˜, ์Šค์œ„ํ”„ํŠธ๋Š” ์˜์–ด ์•ŒํŒŒ๋ฒณ e์™€ ๋ฐœ์Œ๊ธฐํ˜ธ๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ฌถ์–ด ํ•˜๋‚˜์˜ ์บ๋ฆญํ„ฐ๋กœ ๋ด…๋‹ˆ๋‹ค. // ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— cafeNormal.unicodeScalars.count // 4 cafeCombining.unicodeScalars.count /.. ๋”๋ณด๊ธฐ
[Too Swift] ์‹œ์ฆŒ1 1ํ™”. ํด๋กœ์ €๊ฐ€ ๋ˆ„๊ตฐ๋ฐ ? (who's mr. closure?) Collection Iteration with Closure : Mr. closure์™€ ํ•จ๊ป˜ํ•˜๋Š”, ์ปฌ๋ ‰์…˜ ์ดํ„ฐ๋ ˆ์ด์…˜ ์ผ๋ จ์˜ ํ”„๋กœ์‹œ์ ธ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š”, func์ด์™ธ์˜ ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ๋˜๋Š” ... ํŠนํžˆ, ์ปฌ๋ ‰์…˜๋“ค์„ ๋‹ค๋ฃฐ ๋•Œ ํŠนํžˆ ์œ ์šฉํ•œ ... ๋ณ€์ˆ˜์— ํ• ๋‹นํ•ด, ๋‹ค๋ฅธ value๋“ค ์ฒ˜๋Ÿผ "์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”" ... ๊ทธ ๋ถ„ ... ์ด๋ฆ„ ์—†๋Š” ํ•จ์ˆ˜ ... Mr. closure๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ  : Raywenderlich "Swift Apprentice" https://store.raywenderlich.com/products/swift-apprentice Closure Basics ํด๋กœ์ € ์Œฉ๊ธฐ์ดˆ + training ํด๋กœ์ ธ๋Š” ๋‘˜๋Ÿฌ์‹ผ ํ™˜๊ฒฝ์˜ ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜๋ฅผ ์ž์‹ ์˜ scope์œผ๋กœ "close over"ํ•  ์ˆ˜ ์žˆ์–ด์„œ, ํด๋กœ.. ๋”๋ณด๊ธฐ