Hello Swift 4/5 : Closure and Enum

26
Welcome to Swift 4/5 enum StudyPersonDetail { case Name(String) case Age(Int) case EyeSight(Float,Float) }

description

Closure and Enumeration in Swift.

Transcript of Hello Swift 4/5 : Closure and Enum

Welcome to Swift 4/5

enum StudyPersonDetail { case Name(String) case Age(Int) case EyeSight(Float,Float)}

•Closures•Enumerations

다룰 내용

Closures

// 클로저는 내부함수(Nested Function)이 외부함수의 맥락(Context)에 접근할 수 있는 것을 가르킨다 - 생활코딩

Closures

// 클로저는 내부함수(Nested Function)이 외부함수의 맥락(Context)에 접근할 수 있는 것을 가르킨다 - 생활코딩

function init() { var name = "Mozilla"; function displayName() { alert(name); } displayName();}init();

// Example of Closures in JavaScript- MOZILLA DEVELOPER NETWORK

Closures

// 클로저는 내부함수(Nested Function)이 외부함수의 맥락(Context)에 접근할 수 있는 것을 가르킨다 - 생활코딩

function makeFunc() { var name = "Mozilla"; function displayName() { alert(name); } return displayName;}

var myFunc = makeFunc();myFunc();

// Example of Closures in JavaScript- MOZILLA DEVELOPER NETWORK

Closures

// 클로저는 내부함수(Nested Function)이 외부함수의 맥락(Context)에 접근할 수 있는 것을 가르킨다 - 생활코딩

func makeFunc()->(()->String){ var name = "Swift" func displayName() -> String { return name } return displayName;}

var myFunc = makeFunc();myFunc();

// Example of Closures in JavaScript- MOZILLA DEVELOPER NETWORK// 클로저는 내부함수(Nested Function)이 외부함수의 맥락(Context)에 접근할 수 있는 것을 가르킨다 - 생활코딩

Closures

// 클로져를 이루는 구성요소 = 함수 + 함수가 만들어진 환경// myFunc이라는 클로져는 displayName이라는 함수와, name이라는 변수를 포함한다.

func makeFunc()->(()->String){ var name = "Swift" func displayName() -> String { return name } return displayName;}

var myFunc = makeFunc();myFunc();

Closures

// 클로져를 이루는 구성요소 = 함수 + 함수가 만들어진 환경// myFunc이라는 클로져는 displayName이라는 함수와, name이라는 변수를 포함한다.

func makeAdder(x:Int)->Int->Int{ func add(y:Int) -> Int{ return x+y } return add}

var add5 = makeAdder(5)var add10 = makeAdder(10)

add5(1)add10(2)

Closures

// 클로져를 이루는 구성요소 = 함수 + 함수가 만들어진 환경// myFunc이라는 클로져는 displayName이라는 함수와, name이라는 변수를 포함한다.

func makeAdder(x:Int)->Int->Int{ func add(y:Int) -> Int{ return x+y } return add}

var add5 = makeAdder(5)var add10 = makeAdder(10)

add5(1)add10(2)

Closures’s Syntax

// 클로져를 이루는 구성요소 = 함수 + 함수가 만들어진 환경// myFunc이라는 클로져는 displayName이라는 함수와, name이라는 변수를 포함한다.

let names = ["cody","zed","jimmy","allen"]

func backwards(s1:String, s2:String )->Bool{ return s1>s2}var sorted = sort( names, backwards)

Closures’s Syntax

// 클로져를 이루는 구성요소 = 함수 + 함수가 만들어진 환경// myFunc이라는 클로져는 displayName이라는 함수와, name이라는 변수를 포함한다.

let names = ["cody","zed","jimmy","allen"]

var sorted = sort( names, {(s1:String, s2:String)->Bool in return s1>s2 })

Closures’s Syntax

{(parameters)->(return type) instatementreturn value

}

Closures’s Syntax

{(parameters)->(return type) instatementreturn value

}

Inferring Type From Context

// 클로져를 이루는 구성요소 = 함수 + 함수가 만들어진 환경// myFunc이라는 클로져는 displayName이라는 함수와, name이라는 변수를 포함한다.

let names = ["cody","zed","jimmy","allen"]

var sorted = sort( names, {(s1:String, s2:String)->Bool in return s1>s2 })

Inferring Type From Context

// 클로져를 이루는 구성요소 = 함수 + 함수가 만들어진 환경// myFunc이라는 클로져는 displayName이라는 함수와, name이라는 변수를 포함한다.

let names = ["cody","zed","jimmy","allen"]

var sorted = sort(names, {1:String, s2:String)->Bool in return s1>s2 })

Inferring Type From Context

// 클로져를 이루는 구성요소 = 함수 + 함수가 만들어진 환경// myFunc이라는 클로져는 displayName이라는 함수와, name이라는 변수를 포함한다.

let names = ["cody","zed","jimmy","allen"]

var sorted = sort(names,{s1,s2 in return s1>s2 })

Implicit Returns

// 클로져를 이루는 구성요소 = 함수 + 함수가 만들어진 환경// myFunc이라는 클로져는 displayName이라는 함수와, name이라는 변수를 포함한다.

let names = ["cody","zed","jimmy","allen"]

var sorted = sort(names,{s1,s2 in s1>s2 })

Shorthand Argument Names

// 클로져를 이루는 구성요소 = 함수 + 함수가 만들어진 환경// myFunc이라는 클로져는 displayName이라는 함수와, name이라는 변수를 포함한다.

let names = ["cody","zed","jimmy","allen"]

var sorted = sort(names,{$0>$1})

Operator Functions

// 클로져를 이루는 구성요소 = 함수 + 함수가 만들어진 환경// myFunc이라는 클로져는 displayName이라는 함수와, name이라는 변수를 포함한다.

let names = ["cody","zed","jimmy","allen"]

var sorted = sort(names,>)

Enumeration Syntax

enum StudyPerson { Kimin, GwangHo, Cody,}

Enumeration Syntax

enum StudyPerson { case Kimin case GwangHo case Cody}

Enumeration Syntax

enum StudyPerson { case Kimin, GwangHo, Cody}

Enumeration Syntax

enum StudyPerson { case Kimin, GwangHo, Cody}

var enumValue = StudyPerson.KiminenumValue = StudyPerson.GwangHoenumValue = .Cody

Enumeration Syntax

var enumValue = Study.Kimin

switch enumValue {case Kimin: // blah blahcase GwangHo: // blah blahcase Cody: // blah blah}

Enumeration Syntax

enum StudyPersonDetail { case Name(String) case Age(Int) case EyeSight(Float,Float)}

var codyName = StudyPersonDetail.Name("Cody")var codyAge = StudyPersonDetail.Age(32)var codyEyeSight = StudyPersonDetail.EyeSight(0.2,0.1)

switch codyEyeSight {case .EyeSight(let left, let right): left rightcase .EyeSight(let left, let right): println("제 시력은 \(left):\(right) 입니다.")default: "defulat case를 지정해야 합니다."}

감사합니다.

let writer = ["Cody":"Yun"]