[swift] swift 기본 문법 스터디 7주차
[swift] swift 기본 문법 스터디 7주차 일급 객체로서의 함수 특성 런타임에서 생성가능 인자값으로 객체 전달가능 반환값으로 객체를 사용할 수 있어야 함 변수, 데이터 구조 안에 저장 고유한 구별이 가능 변수나 상수에 함수를 대입할 수 있음 함수의 결과값을 변수나, 상수에 대입하는 것이 아는 그 자체를 변수나 상수에 대입할 수 있습니다. func printAddFive(base: Int) -> String { return "결과 값은 \(base)입니다." } let fnc1 = printAddFive(base: 4) // 결과 값은 9입니다. 위의 예제는 함수를 선언하고, 그 함수의 결과값을 변수에 저장하는 예제 입니다. let fnc2 = printAddFive fun2(5) // 결과 값은 10입니다. 이렇게 함수 자체를 대입하고, 인자를 넣어서 호출 할 수 있습니다. 하지만 왜 _ 이렇게 라벨을 없애지 않았는데 없어진 걸까요? 변수를 대입하는데에 타입이 필요하고, 같은 타입에 연산이 가능 하듯이 함수도 마찬가지 입니다. 함수도 함수 타입이 있습니다. (인자타입1, 인자타입2) -> 반환타입 우리가 위에서 만든 printAddFive 함수의 타입을 적어보면, (Int) -> String 이 되겠군요. 함수의 반환타입으로 함수를 사용할 수 있음 함수의 반환에는 자료형이나, 클래스, 구조체 뿐만 아니라 함수도 반환할 수 있습니다. 그러면 어떻게 생겼을까요? func desc() -> String { return "desc 함수입니다." } func pass() -> () -> String { return desc } let p = pass() p() // desc 함수입니다. 위의 예제 코드를 보면, pass 함수는, () -> String 이라는 함수를 반환 합니다. 그리고 그...