๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ381 [Swift] ํ๋กํ ์ฝ ํ๋กํ ์ฝ(Protocols)์ด๋ค ๊ธฐ๋ฅ์ ํ์ํ ์๊ตฌ์ฌํญ์ ์ ์ธํด๋๋ ๊ฒํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ์ ์ํด ์ฑํํ๋กํ ์ฝ ๋ฌธ๋ฒprotocol SomeProtocol {// protocol definition}ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ ํ์ ์ ์ ์ํ๊ธฐ ์ํด์๋ ํ์ ์ด๋ฆ ๋ค์ ์ฝ๋ก (:)์ ๋ถ์ด๊ณ ํ๋กํ ์ฝ ์ด๋ฆ์ ์ ์ํ๋กํ ์ฝ์ ์ฑํํ ๋๋ ํ๋กํ ์ฝ์ ์ ์๋ ์๊ตฌ์ฌํญ์ ๋ฐ๋์ ๊ตฌํ ํด์ผ๋ง ํจ struct SomeStructure: FirstProtocol, AnotherProtocol { // structure definition goes here}class SomeClass: SomeSuperclass, FirstProtocol, AnotherProtocol { // class definition goes her.. 2024. 3. 29. [Swift] ์๋ฌ ์ฒ๋ฆฌ ์๋ฌ์ ํ์์ ๋ฐ์enum VendingMachineError: Error { case invalidSelection case insufficientFunds(coinsNeeded: Int) case outOfStock}throw VendingMachineError.insufficientFunds(coinsNeeded: 5) ์๋ฌ ์ฒ๋ฆฌ์๋ฌ๊ฐ ๋ฐ์ํ ํจ์์์ ๋ฆฌํด๊ฐ์ผ๋ก ์๋ฌ๋ฅผ ๋ฐํํด ํด๋น ํจ์๋ฅผ ํธ์ถํ ์ฝ๋์์ ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋๋ก ํ๋ ๋ฐฉ๋ฒdo-catch ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ต์ ๋ ๊ฐ์ ๋ฐํํ๋ ๋ฐฉ๋ฒassert๋ฅผ ์ฌ์ฉํด ๊ฐ์ ๋ก ํฌ๋์ฌ๋ฅผ ๋ฐ์์ํค๋ ๋ฐฉ๋ฒ์๋ฌ๋ฅผ ๋ฐ์์ํค๋ ํจ์ ์ฌ์ฉํ๊ธฐ์ด๋ค ํจ์, ๋ฉ์๋ ํน์ ์์ฑ์๊ฐ ์๋ฌ๋ฅผ ๋ฐ์์ํฌ ์ ์๋ค๋ ๊ฒ์ ์๋ฆฌ๊ธฐ ์ํด throw ํค์๋๋ฅผ ํจ์ ์ ์ธ.. 2024. 3. 28. [Swift] ์ต์ ๋ ์ฒด์ด๋ ์ต์ ๋ ์ฒด์ด๋nil์ผ ์๋ ์๋ ํ๋กํผํฐ๋, ๋ฉ์๋ ๊ทธ๋ฆฌ๊ณ ์๋ธ์คํฌ๋ฆฝํธ์ ์ง์(query)๋ฅผ ํ๋ ๊ณผ์ ๋ง์ฝ ์ต์ ๋์ด ํ๋กํผํฐ๋ ๋ฉ์๋ ํน์ ์๋ธ์คํฌ๋ฆฝํธ์ ๋ํ ๊ฐ์ ๊ฐ๊ณ ์๋ค๋ฉด ๊ทธ ๊ฐ์ ๋ฐํํจ๋ง์ฝ ๊ฐ์ด nil์ด๋ผ๋ฉด nil ๋ฐํ ๊ฐ์ ์ธ๋ํ์ ๋์ฒด๋ก์จ์ ์ต์ ๋ ์ฒด์ด๋์ต์ ๋ ๊ฐ ๋ค์ ๋ฌผ์ํ(?)๋ฅผ ๋ถ์ฌ์ ํํ ๊ฐ๋ฅ์ต์ ๋์ ์ฌ์ฉํ ์ ์๋ ๊ฐ์๋ ํ๋กํผํฐ, ๋ฉ์๋ ๊ทธ๋ฆฌ๊ณ ์๋น์คํฌ๋ฆฝํธ๊ฐ ํฌํจ์ต์ ๋ ๊ฐ์ ๊ฐ์ ์ธ๋ํํ๊ธฐ ์ํด ๋ค์ ๋๋ํ(!)๋ฅผ ๋ถ์ด๋ ๊ฒ๊ณผ ์ ์ฌ๊ฐ์ ์ธ๋ํ์ ํ๋๋ฐ ๋ง์ฝ ๊ทธ ๊ฐ์ด ์์ผ๋ฉด ๋ฐํ์ ์๋ฌ ๋ฐ์์ต์ ๋ ์ฒด์ด๋์ ์ฌ์ฉํ๋ฉด ๋ฐํ์ ์๋ฌ ๋์ nil์ด ๋ฐํclass Person { var residence: Residence?}class Residence { var numberOfRo.. 2024. 3. 26. [Swift] ์ด๊ธฐํ ์ด๊ธฐํ (Initialization)ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ค๋น ์์ ์ ํ๋ ๋จ๊ณ๊ฐ ์ ์ฅ ํ๋กํผํฐ์ ์ด๊ธฐ ๊ฐ์ ์ค์ →initializer๋ฅผ ์ ์ ํ๋ ๊ฒ์ผ๋ก ๊ตฌํ ์ ์ฅ ํ๋กํผํฐ๋ฅผ ์ํ ์ด๊ธฐ๊ฐ ์ค์ ์ธ์คํด์ค์ ์ ์ฅ ํ๋กํผํฐ๋ ์ฌ์ฉํ๊ธฐ ์ ๋ฐ๋์ ํน์ ๊ฐ์ผ๋ก ์ด๊ธฐํ ๋ผ์ผ ํจ (๊ธฐ๋ณธ ๊ฐ์ผ๋ก ์ค์ /ํน์ ๊ฐ์ผ๋ก ์ค์ ๊ฐ๋ฅ)NOTEinitializer์์ ์ ์ฅ ํ๋กํผํฐ์ ๊ฐ์ ์ง์ ์ค์ ํ๋ฉด ํ๋กํผํฐ ์ต์ ๋ฒ๊ฐ ํธ์ถ๋์ง ์๊ณ ๊ฐ ํ ๋น์ด ์ํ ์ด๋์ ๋ผ์ด์ ํน์ ํ์ ์ ์ธ์คํด์ค ์์ฑ (์ด๋์ ๋ผ์ด์ ์ ๊ฐ์ฅ ๊ฐ๋จํ ํํ_ ํ๋ผ๋ฏธํฐ ์์ด init ํค์๋ ์ฌ์ฉ)init() {// perform some initialization here}๊ธฐ๋ณธ ํ๋กํผํฐํ๋กํผํฐ ์ ์ธ๊ณผ ๋์์ ๊ฐ์ ํ ๋น, ์ด ๊ฐ์ ์ด๊ธฐ ๊ฐ์ผ.. 2024. 3. 25. [Swift] ์์ ์์(Inheritance)ํด๋์ค์์ ๋ค๋ฅธ ํด๋์ค๋ก ๋ถํฐ ์์ํ ์ ์์ํด๋์ค์์ ์ ์ฅ ํ๋กํผํฐ, ๊ณ์ฐ ํ๋กํผํฐ ์๊ด์์ด ์์ ๋ฐ์ ํ๋กํผํฐ์ ํ๋กํผํฐ ์ต์ ๋ฒ๋ฅผ ์ฌ์ฉํด ๊ฐ ์ค์ ์ ๋ฐ์ํ ์ ์์๊ธฐ๋ฐํด๋์ค๋ค๋ฅธ ์ด๋ค ํด๋์ค๋ก๋ถํฐ ์์๋ฐ์ง ์์ ํด๋์ค SomeSuperclass์๋ธํด๋์ฑ๋ถ๋ชจ๋ก ๋ถํฐ ์ฑ๊ฒฉ์ ์์๋ฐ๊ณ ์์ ๊ณ ์ ์ ํน์ฑ๋ ์ถ๊ฐํ ์ ์์class SomeSubclass: SomeSuperclass { // subclass definition goes here}์๋ธํด๋์ฑ์ ๊ณ์ํ ์ ์์ ์ค๋ฒ๋ผ์ด๋ฉ (Overriding)์๋ธํด๋์ค์์ ๋ถ๋ชจํด๋์ค์์ ์์๋ฐ์ ๊ฒ์ ์ฌ์ ์์ธ์คํด์ค, ๋ฉ์๋, ํ์ ๋ฉ์๋, ์ธ์คํด์ค ํ๋กํผํฐ, ํ์ ํ๋กํผํฐ, ์๋ธ์คํฌ๋ฆฝํธ ๋ชจ๋ ๊ฐ๋ฅ๋ค๋ฅธ ์ ์ธ ์์ overrideํค์๋ ๋ถ์ฌ .. 2024. 3. 22. [Swift] ์๋ธ์คํฌ๋ฆฝํธ ์๋ธ์คํฌ๋ฆฝํธ(Subscripts)ํด๋์ค, ๊ตฌ์กฐ์ฒด, ๊ทธ๋ฆฌ๊ณ ์ด๊ฑฐํ์์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ํด ์ฌ์ฉ ๊ฐ๋ฅ์ฝ๋ ์ , ๋ฆฌ์คํธ, ์ํ์ค ๋ฑ ์งํฉ์ ํน์ ๋ฉค๋ฒ ์๋ฆฌ๋จผํธ์ ๊ฐ๋จํ๊ฒ ์ ๊ทผ ํ ์ ์๋ ๋ฌธ๋ฒ์ถ๊ฐ์ ์ธ ๋ฉ์๋ ์์ด ํน์ ๊ฐ์ ํ ๋นํ๊ฑฐ๋ ๊ฐ์ ธ์ฌ ์ ์์ํ๋์ ํ์ ์ ์ฌ๋ฌ ์๋ธ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ํ ์ ์๊ณ ์ค๋ฒ๋ก๋(Overload)๋ ๊ฐ๋ฅ๋จ์ผ ์ธ์ ๊ฐ์ ๋์ด, ํ์์ ๋ฐ๋ผ ๋ณต์ ์ธ์ ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅ์๋ธ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ (Subscript Syntax)์๋ธ์คํฌ๋ฆฝํธ๋ ์ฝ๊ณ -์ฐ๊ธฐ(read-write) ํน์ ์ฝ๊ธฐ ์ ์ฉ(read only)๋ง ๊ฐ๋ฅsetter, getter ๋ฐฉ์์ ๋ฐ๋ฆsubscript(index: Int) -> Int { get { // ์ ์ ํ ๋ฐํ ๊ฐ } set(newValue) { .. 2024. 3. 22. ์ด์ 1 ยทยทยท 13 14 15 16 17 18 19 ยทยทยท 64 ๋ค์ ๋ฐ์ํ