야곰 스위프트 프로그래밍 (4. 함수, 옵셔널)

🌈 devleeky16498·2022년 5월 20일
0

함수

  1. 구조체, 클래스, 열거형 등 특정 타입에 연관되어 사용되는 함수를 메서드, 전역적으로 사용되는 함수를 그냥 함수라고 말한다.
  2. 함수는 기본적으로 매개변수와 반환타입으로 정의한다. 이 때 매개변수는 함수 정의 시 외부로부터 받는 전달 값의 이름을 의미하며, 전달인자는 함수를 실제 호출하는 경우 전달하는 값을 의미한다. 레이블이라고도 말한다.
  3. 함수에서는 매개변수(파라미터)의 기본값을 지정해서 함수를 정의할 수 있으며, 이를 지정할 시 해당 파라미터에는 자동으로 기본값이 할당되어 함수를 수행하게 된다.
  4. 가변 매개변수의 사용이 가능하며, 파라미터의 타입 앞에 inout 키워드를 사용한다. 그리고 함수를 실행할때는 앰퍼센드 기호를 명시해준다.(&) 상수는 변경이 불가하므로 파라미터 사용이 안 된다.
  5. 반환이 없는 함수도 정의 가능하다. () -> () 다음과 같이 표현하거나 () -> Void라는 키워드를 사용해서 반환타입이 없음을 정의간에 나타낸다.
  6. 함수는 1급 객체이므로 데이터 타입으로서도 역할이 가능하다. () -> ()등의 함수가 가지는 파라미터와 반환값의 형태는 그 자체로 데이터 타입의 역할이 가능하다.
  7. 파라미터만을 사용한 함수의 축약표현이 가능하다. sayHello(name : String, time : Int) -> String, 이 함수의 축약은 sayHello(name:time:)다음과 같이 나타낼 수 있다.
  8. 함수는 1급 객체로서 중첩 함수 구현이 가능하다. 쉽게 말하면 함수 안에 함수를 새로 정의하여 사용할 수 있다.
  9. @discardableResult 키워드를 앞에 붙이면 이는 반환값을 무시 가능한 함수임을 나타낼 수 있도록 해준다. 반환타입이 있는 함수에 해당 키워드를 붙이는 경우 별도의 반환값을 명시하지 않아도 컴파일링에서 오류가 발생하지 않는다.

옵셔널

  1. 옵셔널은 단어 뜻 그대로, 선택적으로서 그 값이 있을 수도 없을수도 있음을 나타낸다. 하지만 통상 값이 부재할 수 있음의 가능성을 명시하는 코드로 사용되는 경우가 많다.
  2. nil을 통해서 값의 껍데기는 있으나 값 자체가 공백임을 나타낼 수 있으며, nil은 반드시 옵셔널로 선언된 곳에서만 사용이 가능하다.
  3. 옵셔널은 열거형으로 구성된 타입이다. 제네릭이 적용된 열거형으로서 모든 타입에 대해서 대응이 가능한 데이터 타입이다. nil의 경우 none케이스를 실행하며, 값이 있는 경우는 some케이스로 실행된다. 이 때 연관값 wrapped 에 대해서 래핑된 값이 할당된다. 이를 벗겨서 사용하는 것이 언래핑으로서 방법에는 옵셔널 바인딩과 강제 언래핑이 있다.
  4. 바인딩은 코드의 안정성을 보장하는 가운데 효과적으로 언래핑이 가능하며, 강제 언래핑은 간단하지만 가장 위험하다. 이 경우 nil이 확인되는 경우 런타임오류가 생기게 된다.
  5. 옵셔널 바인딩은 if let, guard 구문을 주로 사용하여 실행되며, 강제 언래핑은 옵셔널 타입의 프로퍼티에 !를 명시하여 수행한다.
profile
Welcome to Growing iOS developer's Blog! Enjoy!🔥

0개의 댓글