study iOS๐ ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [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 2 ๋ค์