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"ํ ์ ์์ด์, ํด๋ก.. ๋๋ณด๊ธฐ ์ด์ 1 ๋ค์