- 기능의 수행 - 특정 작업이나 기능을 수행하는 코드의 블록. 호출 될 때 실행되며, 순차적으로 실행된다
- 재사용성 - 코드를 모듈화하고, 같은 기능을 반복할 수 있도록 한다
- 매개변수 - 함수는 입력값을 받을 수 있고 입력값은 매개변수에 의해 만들어진다
- 반환값 - 값의 반환이 가능하다
- 함수 타입 - Swift에서는 함수도 하나의 타입으로 취급될 수 있다
func functionName (arguumentLabel: parameterType) -> returnType { // code }
메서드는 함수와 유사한 기능을 수행하지만, 몇가지 중요한 기능의 차이가 있다
1. 정의와 소속성
- 함수는 독립적으로 정의되며, 특정한 개체나 타입에 속해 있지 않는다.
- 메서드는 클래스, 구조체, 열거형 등의 특정한 타입에 속해 있다. 객체 지향 프로그래밍에서 객체의 특정한 기능을 수행하기 위해 사용한다
- 호출 방식
- 함수는 직접적으로 호출된다
- 메서드는 해당하는 객체 또는 타입에 대해 호출된다.
- 소속성
- 함수는 특정한 객체의 속성이나 상태에 접근할 수 없다 -> 주어진 매게변수에 따른 값만을 작업 수행하고 값을 반환하는 데 집중한다
- 메서드는 객체 또는 타입의 속성에 직접적으로 접근할 수 있다.
- 튜플은 여러 타입의 값을 하나로 그룹화한 값이다
- 튜플은 단순한 데이터 구조에서 효과적이다. 데이터 구조가 복잡해질수록 적합하지 않다
- 복잡한 데이터는 사용하는 쪽에서 추가적인 매핑(Mapping) 작업이 필요하다
let myInfo: (Int, String) = (height: 186, name: "eunsung") print("제 이름은 \(myInfo.1) 입니다") //출력값: 제 이름은 eunsung 입니다 print("제 키는 \(myInfo.0) 입니다") //출력값: 제 키는 186 입니다
- 엘레멘트의 순번은 1이 아닌 0 부터 시작한다
- 각 엘레멘트에는 이름을 붙일 수 있다
- Any는 다양한 데이터 타입의 값을 수용한다
var anyArray: [Any] = [1, "apple", true]
- 하지만 Any 데이터 형을 대입하려면 반드시 형 변환이 필요하다
var anyValue: Any = 100 let anyValue: Double = anyValue // 에러 메시지 : Cannot convert vaulue of type 'Any' to specific type 'Double'
- 형 변환 과정은 옵셔널을 이해해야 한다
Swift에서 타입(Type)은 변수 또는 상수에 저장될 데이터의 종류를 정의하는 것이다.
Swift의 타입은 크게 두가지로 나뉜다
- Int, Double, Bool, String, Character 등등
- Swift에서는 개발자가 직접 타입을 정의할 수 있는 능력을 제공한다
- 구조체(Structures) - 멤버 변수와 메서드를 포함하는 타입
- 클래스(Classes) - 객체 지향 프로그래밍을 위한 참조 타입
- 열거형(Enumerations) - 관련된 값들의 그룹을 정의하는 타입
- 프로토콜(Protocols) - 특정 작업 또는 기능에 대한 메서드, 속성, 요구 사항을 정의 하는 타입