๋ฐฐ์ด์ฒ๋ผ ์์๊ฐ ์๋ ๋์ ๋๋ฆฌkey๊ฐ์ด Hashable์ผ ํ์์์(๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ๋น ๋ฅด์ง ์์)key๊ฐ์ด ๋์ผํ ๊ฒ๋ ๊ฐ๋ฅโ: KeyValuePairsโ ํ์ ์ ๋ฐ๋์ ์ ์ด์ผํจ์ ์ ์ผ๋ฉด ๋์ ๋๋ฆฌ ํ์ ์ด ๋๊ธฐ ๋๋ฌธ
์กฐ๊ฑด์ปดํจํฐ๊ฐ 1๋ถํฐ 10์ฌ์ด์ ์ ์๋ฅผ ๋๋ค ๊ฐ์ผ๋ก ์ ํํ๊ณ , ์ ์ฅํ๋๋ก ํ๋ค.๊ทธ๋ฆฌ๊ณ ๋น์ ์ด 1์์ 10์ฌ์ด์ ์ ์๋ฅผ ์ ํํ๋ค.์ปดํจํฐ๊ฐ ์ ํํ ๋๋ค๊ฐ๊ณผ ๋น์ ์ ๊ฐ์ ๋น๊ตํ๊ณ ๋น์ ์ ์ซ์๊ฐ ๋ ๋์ ๊ฒฝ์ฐ "Down", ๋น์ ์ ์ซ์๊ฐ ๋ ๋ฎ์ ๊ฒฝ์ฐ๋ "Up", ๋น์ ์ ์ซ์์
ํจ์๋ฅผ ๊ตฌ์ฑํ๋ค๋ณด๋ฉด ์์์ ์๋ฆฌ๊น์ง ๊ณ์ฐํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.์๋ ํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ Foundation์ import ํด์ค์ผํ๋ค'import Foundation'round()์์์ ์ดํ๋ฅผ ๋ฐ์ฌ๋ฆผํ๋ค.์ํ๋ ์์์ ์๋ฆฌ๊น์ง ๋ฐ์ฌ๋ฆผํด์ ๋ํ๋ด๊ณ ์ถ์๋ceil()์์์
์ด๊ธฐํ๋ ํด๋์ค๋ ๊ตฌ์กฐ์ฒด ๋๋ ์ด๊ฑฐํ์ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ค๋น ๊ณผ์ ์ด๋ค. ์ด๊ธฐํ๊ฐ ๋ ์ธ์คํด์ค๋ ์ฌ์ฉ ํ ์๋ฉธ ์์ ์ด ์ค๋ฉด ์๋ฉธํ๋ค.์ด๋์ ๋ผ์ด์ (Initializer) ์ด๊ธฐํ ๊ณผ์ ์ ์ง์ ๊ตฌํํ ์ ์๋ค. ๊ตฌํ๋ ์ด๋์ ๋ผ์ด์ ๋ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์๋
ํ๋กํผํฐ๋ ํด๋์ค, ๊ตฌ์กฐ์ฒด ๋๋ ์ด๊ฑฐํ ๋ฑ์ ๊ด๋ จ๋ ๊ฐ์ ๋ปํ๋ค.๋ฉ์๋๋ ํน์ ํ์ ์ ๊ด๋ จ๋ ํจ์๋ฅผ ๋ปํ๋ค.์ ์ฅ ํ๋กํผํฐ, ์ฐ์ฐ ํ๋กํผํฐ, ํ์ ํ๋กํผํฐ๋ก ๋๋ ์ ์๋ค.์ ์ฅ ํ๋กํผํฐ(Stored Properties)์ธ์คํด์ค์ ๋ณ์ ๋๋ ์์๋ฅผ ์๋ฏธํ๋ค. ๊ตฌ์กฐ์ฒด์ ํด๋์ค
๊ตฌ์กฐ์ฒด์ ํด๋์ค๋ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ์ ๊ธฐ๋ฅ์ ๊ฐ์ง ์ ์๋ค.๊ตฌ์กฐ์ฒด์ ์ธ์คํด์ค๋ ๊ฐ ํ์ ํด๋์ค์ ์ธ์คํด์ค๋ ์ฐธ์กฐ ํ์ ์์คํ์ผ ํ๋์ ์ฌ๋ฌ๊ฐ์ ๊ตฌ์กฐ์ฒด์ ์ฌ๋ฌ ๊ฐ์ ํด๋์ค๋ฅผ ์ ์ํ๊ณ ๊ตฌํํด๋ ๋ฌธ์ ๊ฐ ์๋ค.์ค์ฒฉ ํจ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ตฌ์กฐ์ฒด ์์ ๊ตฌ์กฐ์ฒด
์ค์ํํธ์ ์์ ์ฑ์ ๋ฌธ๋ฒ์ผ๋ก ๋ด๋ณดํ๋ ๊ธฐ๋ฅ์ด๋ค.์ต์ ๋(optional)์ด๋ ์ฌ์ ์ ์๋ฏธ๋ '์ ํ์ ์ธ', ์ฆ ๊ฐ์ด '์์ ์๋, ์์ ์๋ ์์'์ ๋ํ๋ด๋ ํํ์ด๋ค.์ฆ '๋ณ์๋ ์์ ๋ฑ์ ๊ผญ ๊ฐ์ด ์๋ค๋ ๊ฒ์ ๋ณด์ฅํ ์ ์๋ค. ์ฆ, ๋ณ์ ๋๋ ์์์ ๊ฐ์ด nil์ผ ์๋
ํจ์๋ ์์ ์ ๊ฐ์ฅ ์์ ๋จ์์ด์ ํ๋์ ์์ ํ๋ก๊ทธ๋จ์ด๊ธฐ๋ ํ๋ค. ํ๋ก๊ทธ๋จ์ ์ด๋ฃจ๋ ์ฃผ๋ ์์ ์ค ํ๋์ด๋ค.์ค์ํํธ์์ ํจ์๋ ์ผ๊ธ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ํ๋์ ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.์ค์ํํธ์ ํจ์๋ ์์ ๋๊ฐ ๊ต์ฅํ ๋๋ค.๊ธฐ๋ณธ์ ์ผ๋ก๋ ๊ฐ๋ค. ์ํฉ์ด๋ ์์น์ ๋ฐ๋ผ ๋ค๋ฅธ ์ฉ
ํน์ ์กฐ๊ฑด์์ ์ฝ๋๋ฅผ ์คํํด์ผ ํ๋ ์ํฉ, ์คํํ์ง ๋ง์์ผ ํ๋ ์ํฉ, ํน์ ๋ช ๋ น์ด๋ฅผ ๋ฐ๋ณตํด์ ์คํํด์ผ ํ๋ ์ํฉ๋ ๋ฐ์ํ๋ค. ์ด๋ด๋ ์ฌ์ฉํ๋ ๊ฒ์ด ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ๋ณต๋ฌธ์ด๋ค.if ๊ตฌ๋ฌธ, switch ๊ตฌ๋ฌธ์ด ์๋ค.if, else ๋ฑ์ ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉฐ ์ค์ํํธ์ if ๊ตฌ๋ฌธ์
ํน์ ํ ๋ฌธ์๋ก ํํํ ํจ์๋ฅผ ๋ปํ๋ค. ํน์ ์ฐ์ฐ์์ ์ญํ ์ ํ๋ก๊ทธ๋๋จธ์ ์๋๋๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋ค.์ฐ์ฐ ๋๋ ๊ฐ์ ์์ ๋ฐ๋ผ ๋จํญ, ์ดํญ, ์ผํญ ๋ฑ์ผ๋ก ๊ตฌ๋ถํ๊ธฐ๋ ํ๊ณ , ์ฐ์ฐ์์ ์์น์ ๋ฐ๋ผ ์ ์, ์ค์, ํ์ ๋ฑ์ผ๋ก ๊ตฌ๋ถํ๊ธฐ๋ ํ๋ค.๋จํญ ์ฐ์ฐ์ !A > ์ ์ ์ฐ
์ฒ์ ์ค์ํํธ๋ฅผ ๋ฐํํ ๋ ๊ฐ์กฐํ๋ ์์ ์ฑ(Safe)์ด ๊ฐ์ฅ ๋๋ ทํ๊ฒ ๋์ค๋ ๋ถ๋ถ์ด๋ค. ์ค์ํํธ๋ ํ์ ์ ๊ต์ฅํ ๋ฏผ๊ฐํ๊ณ ์๊ฒฉํ๋ค. ์๋ก ๋ค๋ฅธ ํ์ ๋ผ๋ฆฌ์ ๋ฐ์ดํฐ ๊ตํ์ ๊ผญ ํ์ ์บ์คํ (Type-Casting, ํ๋ณํ)์ ๊ฑฐ์ณ์ผํ๋ค. ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ ํ ๋นํ๋ ๊ฒ
ํ๋ก๊ทธ๋จ์์ ๋ค๋ฃจ๋ ๋ฐ์ดํฐ์ ์ข ๋ฅ๋ฅผ ๋ปํ๋ฉฐ ์ค์ํํธ์ ๋ชจ๋ ๋ฐ์ดํฐ ํ์ ์ด๋ฆ์ ์ฒซ ๊ธ์๊ฐ ๋๋ฌธ์์ธ ๋๋ฌธ์ ์นด๋ฉ์ผ์ด์ค๋ฅผ ์ฌ์ฉํจ์ ์ ํ์ max์ min ํ๋กํผํฐ๋ก ์ต๋๊ฐ๊ณผ ์ต์๊ฐ ํ์ธ์ด ๊ฐ๋ฅํ๋ค.๋ฐ์ดํฐ ํฌ๊ธฐ ํ์ ์ ๋ฐ๋ผ ๋ถ๋ฆฌ๋๋ค32bit์์๋ Int32, UInt32 ํ์
๋ณ์์ ์์๋ ํน์ ํ ์ดํฐ ํ์ ์ ํด๋นํ๋ ๊ฐ์ ์ด๋ฆ์ ๋งํ๋ค. ๊ฐ์ ์์ ํ ์ ์์ผ๋ฉฐ, var \[๋ณ์๋ช ]: \[๋ฐ์ดํฐ ํ์ ] = ๊ฐ์ผ๋ก ์ ์ธํ๋ค.๋ณ์๋ ํ ์ดํฐ ํ์ ์๋ต์ด ๊ฐ๋ฅํ๋ค.๊ฐ์ ์์ ํ ์ ์์ผ๋ฉฐ, let \[์์๋ช ]: \[๋ฐ์ดํฐ ํ์ ] = ๊ฐ์ผ๋ก ์ ์ธํ๋ค.
์ต์ด์๋ 'Safe, Modren, Powerful'์ ํน์ง์ผ๋ก ๋ฐํํ์ง๋ง ์คํ์์ค๋ก ์ ํํ๋ฉด์ Safe, Fast, Expressive๋ก ๋ณ๊ฒฝํ๋ค.์ค์ํํธ๋ ๋ค์ค ํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ง๋ง ํจ์ํ๊ณผ ํ๋กํ ์ฝ ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ์กฐํ๋ค.๋ณ์, ์์, ํจ์, ๋ฉ์๋,