-
Nested Functions - FunctionsiOS/๐ Swift 2020. 11. 8. 19:10
"ํจ์ ๋ธ๋ก ๋ด๋ถ์ ์ ์๋ ํจ์" Example Code func outer() -> () -> () { print("outer") // "outer" var a: Int = 3 func inner(){ print("inner") // "inner" print(a)// 3 -> Nested Function์ Scope : outer local block } return inner } let f = outer() f() outer ๋ธ๋ก ์ธ๋ถ์์ inner ์ ์ ๊ทผ ํ๋ ๋ฐฉ๋ฒ ์ ์ฝ๋์ ๊ฐ์ด inner๋ฅผ ๋ฆฌํดํจ์ผ๋ก์ ๊ฐ์ ์ Scope ํ์ฅ์ ํตํด inner์ ์ ๊ทผํ ์ ์์ต๋๋ค. ๋. ์ด์ ๊ธ: Function Types - Functions Function Types - Functions Function ..
-
Function Types - FunctionsiOS/๐ Swift 2020. 11. 8. 16:25
Function Types๋ ๋ณ์๋ ์์์ ํจ์๋ฅผ assign ํ๋ ๊ฒฝ์ฐ, ํ์ ์ ๋ช ์ํ ๋ ํ์ํฉ๋๋ค. Swift์์ ํจ์๋ first-class citizen ์ด๋ฏ๋ก, ๋ณ์๋ ์์์ ํจ์๋ฅผ assign ํ ์ ์์ต๋๋ค. ์ด์ ๊ธ์์ Function Notation๋ง์ ์ด์ฉํ์ฌ ํ์ ์ถ๋ก ์ ํตํด ์ ์ฅํ์์ง๋ง, ํจ์๋ ์๋ฃํ์ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ๋ช ์์ ์ผ๋ก ๋ณ์ ํน์ ์์์ ํ์ ๋ ํ๊ธฐํ ์ ์์ต๋๋ค. ๋ํ ํด๋ก์ ๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ์ฝ๋๋ฅผ ์ดํดํ๊ธฐ ์ํด Function Types์ ์ดํดํ๋ ๊ฒ์ ํ์ํฉ๋๋ค. Syntax /* Function Types */ (type) -> type () -> () // () -> void ๋ก๋ ํ๊ธฐํ ์ ์์ต๋๋ค. Function์์ ์ฐ๋ void ๋ ๋ฆฌํดํ์ด ์๋ค๋ ๊ฒ์..
-
[Swift] Function Notation - FunctionsiOS/๐ Swift 2020. 11. 8. 11:32
" ํจ์ํ๊ธฐ๋ฒ " ์๋ ํ์ธ์. ์ค๋์ ํจ์ ํ๊ธฐ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ๐ ์ค์ํํธ์์ ํจ์ ํ๊ธฐ๋ฒ์ ํฌ๊ฒ ๋ ๊ฐ์ง ๊ฒฝ์ฐ์ ํ์ํฉ๋๋ค. 1. ์ค๋ฒ๋ก๋ฉ ๋ ํจ์๋ฅผ ๊ตฌ๋ถํ์ฌ ๋ถ๋ฅผ ํ์๊ฐ ์์ ๋ 2. ์ผ๊ธ๊ฐ์ฒด๋ก์ ๋ณ์ ํน์ ์์์ ์ ์ฅํ ๋ ํจ์๋ฅผ ํํํ๋ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ ๊ฐ๋ฐ์ ์ฌ์ดํธ(ํ ํฌ๋ธ๋ก๊ทธ)๋, ๋ ํผ๋ฐ์ค์์๋ ํจ์๋ฅผ ์๋์ ๊ฐ์ด ํ๊ธฐํฉ๋๋ค. /* Function Notation */ random(in:) print(_:seperator:terminator:) 1. ์ค๋ฒ๋ก๋ฉ ๋ ํจ์๋ฅผ ๊ตฌ๋ถํ ๋ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ ํจ์์ ๊ฒฝ์ฐ Function Name๋ง ์ฌ์ฉํ์ฌ ํ๊ธฐํฉ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ, Argument Label์ ' : ' ๋ก ๊ตฌ๋ถํ์ฌ ์ ๋ ฅํฉ๋๋ค. ์ ์ด๋ฏธ์ง์์ Xcode๋ Argurment La..
-
Variadic Parameters - FunctionsiOS/๐ Swift 2020. 11. 7. 16:54
"๊ฐ๋ณ ํ๋ผ๋ฏธํฐ" func example(name: Type...) { ... } ํ๋์ Parameter์ ๊ฐ์ ๋ฐ์ดํฐ ํ์ ์ ๊ฐ์ง ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ Argument๋ก ์ ๋ฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, print(_:seperator:terminator:) ๋ฅผ ๋ณด๊ฒ ์ต๋๋ค. /* print(_:seperator:terminator:)์ prototype */ public func print(_ items: Any..., separator: String = " ", terminator: String = "\n") ์ฒซ ๋ฒ์งธ Parameter๋ฅผ Variadic Parameters๋ก ์ ์ธํ์์ต๋๋ค. Any... ์ด๋ฏ๋ก , ์ด๋ค ํ์ ์ด๋ ๊ฐ์์ ์๊ด์์ด ๋ฃ์ ์ ์์ต๋๋ค. Variadic Parameter์ ์ ์ฝ์ฌ..
-
Argument Label - FunctionsiOS/๐ Swift 2020. 11. 7. 13:23
func example (label name: Type) { // label: Argument Lable, name: Parameter Name .... } ๋ฐ๋ก ์ ์ํ์ง ์์ ์, Parameter Name์ด Argument Lable์ด ๋ฉ๋๋ค. ํจ์๋ฅผ ํธ์ถํ ๋๋ Argument Label์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. Parameter Name์ ํจ์ ํธ์ถ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. Parameter Name์ ํจ์ Body์์ ์ฌ์ฉํฉ๋๋ค. example(label: expr)// ํจ์ ํธ์ถ ์ Argument Label์ ์ด์ฉํด์ผ ํฉ๋๋ค. /* WildCard Pattern */ func example2 (_ name: type) { ... } example2(expr) // WildCard Pattern์ ์ด..
-
In-Out Parameters - FunctionsiOS/๐ Swift 2020. 11. 6. 16:04
"์ ์ถ๋ ฅ ํ๋ผ๋ฏธํฐ" ํจ์ Argument์ ๊ฐ ์ ๋ฌ ์, Parameter๋ ์์ ์์๋ก์ ๊ฐ์ ๋ณต์ฌํฉ๋๋ค. ( immutable ) ์ค์ ๋ก ์ ๋ฌํ Argument์ ๊ฐ์ ๋ณ๊ฒฝํ๊ณ ์ถ์ ๋, inout์ ์ฌ์ฉํฉ๋๋ค. c++์ ์ฐธ์กฐ์์ ๋น์ทํ ๊ธฐ๋ฅ์ ํฉ๋๋ค. /* ์ ์๋ถ */ func example(name: inout Type) { ... } /* ํธ์ถ๋ถ */ example(name: &expr) //์ ๋ฌํ ๊ฐ์ &๋ฅผ ๋ถ์ฌ ์ ๋ฌํฉ๋๋ค. ์ฃผ์ํ ์ 1. ๋ฆฌํฐ๋ด์ ์ ๋ฌํ๋ฉด ์๋ฉ๋๋ค. ๋ฆฌํฐ๋ด์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ฐ๋ก ์์ต๋๋ค. 2. ์์๋ฅผ ์ ๋ฌํ๋ฉด ์ ๋ฉ๋๋ค. immutable์ ๋๋ค. 3. ๊ฐ๋ณ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค. 4. ๊ธฐ๋ณธ ๊ฐ์ ์ง์ ํ ์ ์์ต๋๋ค.
-
Parameters - FunctionsiOS/๐ Swift 2020. 11. 6. 15:27
" ํจ์ ๋ธ๋ก ๋ด์์ ์ฌ์ฉํ๋ ์์ ์์" ์์์ด๋ฏ๋ก immutable์ ๋๋ค. Argument Label์ ๋ฐ๋ก ์ ์ํ์ง ์์ผ๋ฉด, Parameter Name์ด Argument Label์ด ๋ฉ๋๋ค. Argument์์ ๊ตฌ๋ถ ํจ์ ํธ์ถ ์ฝ๋์์ ์ ๋ฌํ Argument๊ฐ ํจ์ ์ ์๋ถ์ Parameter์ ๋ณต์ฌ๋๋ ๊ฒ์ ๋๋ค. ๋. ์ด์ ๊ธ: guard Statement - Conditional Statements guard Statement - Conditional Statements /* Syntax */ guard condition else { statements } guard optionalBinding else { statements } if ์์ ์ฐจ์ด 1. guard ๋ ์กฐ๊ฑด์ ์๊ฐ ๋์ด๋๋๋ผ๋ ์ฝ๋๊ฐ..
-
guard Statement - Conditional StatementsiOS/๐ Swift 2020. 11. 4. 10:30
/* Syntax */ guard condition else { statements } guard optionalBinding else { statements } if ์์ ์ฐจ์ด 1. guard ๋ ์กฐ๊ฑด์ ์๊ฐ ๋์ด๋๋๋ผ๋ ์ฝ๋๊ฐ ์ค์ฒฉ๋์ง ์์ต๋๋ค. 2. guard ๋ else block์ ์๋ตํ ์ ์์ต๋๋ค. 3. Binding์ ์ฌ์ฉํ ๋ณ์ ํน์ ์์๋ฅผ else block ์ดํ์ ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋จ, else block ์์๋ ์ฌ์ฉ ๋ถ๊ฐ ํน์ง 1. else block์ condition ํน์ optionalBinding ์ด ์คํจํ์ ๊ฒฝ์ฐ ์ง์ ํฉ๋๋ค. 2. guard ์ else block ๋ด์์ return ํน์ throw ๋ฅผ ํตํด Early Exit ํด์ผ ํฉ๋๋ค. ( ์๋ ์ ์ปดํ์ผ ์๋ฌ..
-
Type Safety - Data TypesiOS/๐ Swift 2020. 11. 3. 01:41
์ค์ํํธ์ 3๊ฐ์ง ํน์ง : Safe(์์ ์ฑ) , Fast(์ ์์ฑ) , Expressive(ํํ์ฑ) Swift๋ ํ์ ์์ ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์๋ฃํ์ ์๊ฒฉํ๊ฒ ๊ตฌ๋ถํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฃํ์ ์ด๋ฆ์ด ๋ค๋ฅด๋ฉด ๋ฐฐ์ ๋ฐ ์ฐ์ฐ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. /* ์ค์ํ์ ๊ฐ์ Intํ ๋ณ์์ ๋ฃ์ ์ ์์ต๋๋ค */ var val1: Int = 12.34 // (X) /* ๊ฐ์ ํ์ด๋ผ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํฌ๊ธฐ๊ฐ ๋ค๋ฅด๋ฏ๋ก ๋ถ๊ฐ๋ฅ ํฉ๋๋ค */ var val2: Int = 12 var val3: Int8 = val2 // (X) Int: 8๋ฐ์ดํธ, Int8: 1๋ฐ์ดํธ ์ฐ์ฐ ์์๋ ๊ฐ์ด ์ ์ค๋๋ ๋ฌธ์ ๋ฅผ ์ปดํ์ผ ํ์์ ๋ฐฉ์งํ๊ธฐ ์ํด์ ๊ฐ์ ์๋ฃํ๋ผ๋ฆฌ๋ง ์ฐ์ฐ ํ ์ ์์ต๋๋ค. var left: Int = 100 var right: Double ..