728x90
반응형
import Cocoa
// Closure
// first-citizen(일급 시민)
// 변수, 상수 등으로 저장, 전달인자로 전달이 가능
// 함수는 이름이 있는 Closure다
// 함수보다 먼저 만들어진 것
// 써도 되고 안써도 되는 것
// 파이썬의 Lambda 함수와 비슷하다.
// alert 띄울 때 무조건 써야하는 것
// 기능이 있는 변수
// -----------------------------
// Closure와 함수의 비교
// -----------------------------
// 함수
func sumFunction(a: Int, b: Int) -> Int{
return(a + b)
}
var sumResult: Int = sumFunction(a: 50, b: 20)
print(sumResult)
// -----------------------------
// Closure
// app alert 기능에 많이 쓰인다.
var sumClosure : (Int, Int) -> Int = {(a: Int, b: Int) -> Int in return a+b}
sumResult = sumClosure(10, 20)
print(sumResult)
// ------------------------------
// Closure 와 함수 사용하기
// 함수에다가 + - * / 만든다.
let add: (Int,Int) -> Int = {(a:Int, b:Int) -> Int in return a+b}
let subtract: (Int,Int) -> Int = {(a:Int, b:Int) -> Int in return a-b}
let multiply: (Int,Int) -> Int = {(a:Int, b:Int) -> Int in return a*b}
let divide: (Int,Int) -> Int = {(a:Int, b:Int) -> Int in return a/b}
// method는 closure에 쓰려고 맞춤 /method:(Int, Int) -> Int)/
func calculate(a:Int, b:Int, method:(Int, Int) -> Int) -> Int {return method(a,b)}
var calculated: Int, num1: Int = 60, num2:Int = 40
calculated = calculate(a: num1, b: num2, method:add)
print(calculated) // 함수는 컨트롤러, 계산은 closure가 한다.
반응형
'개발자 코드(Code) > Swift(문법)' 카테고리의 다른 글
Swift) 12_열거형 (0) | 2020.09.24 |
---|---|
Swift) 11_클래스 (0) | 2020.09.24 |
Swift) 10_Struct (0) | 2020.09.24 |
Swift) 09_값타입과 참조타입 (0) | 2020.09.24 |
Swift) 08_옵셔널.Playground (0) | 2020.09.24 |