Function 리터럴, Default 매개변수 - Function 리터럴 보다 일반적으로 알려진 클로저(Closure)는 독립적인 코드 블록입니다. 이를 사용하여 함수를 변수에 할당하거나 다른 함수의 인자로 전달할 수 있습니다. 그로인해 코드의 재사용성과 유연성이 높아지는 효과를 가지고 있습니다.
{ (매개변수들) -> 반환 타입 in
실행 코드
}
let greet = { (name: String) -> String in
return "Hello, \(name)!"
}
print(greet("World")) // "Hello, World!" 출력
- Default Parameters 매개변수에 기본값을 지정하여 함수를 호출할 때 해당 매개변수를 생략할 수 있습니다. 그로 인해 코드를 더 간결하게 만들어 가독성이 높아지는 효과가 있습니다.
func 함수명(매개변수명: 타입 = 기본값) -> 반환타입 {
실행 코드
}
//greeting의 Default Parameter로 Hello를 지정
func greet(name: String, greeting: String = "Hello") -> String {
return "\(greeting), \(name)!"
}
print(greet(name: "World")) // "Hello, World!" 출력
print(greet(name: "World", greeting: "Hi")) // "Hi, World!" 출력
Class Class의 기본 구조
Property의 조건 3가지 -> 초기값이 있어야 한다. -> init을 이용해서 초기화한다 -> Optional 변수로 선언한다(자동으로 nil 초기화)
Optional(옵셔널)에서 !와 ?의 차이점 Int!와 Int?로 예를 들어 설명 해보겠습니다. Optional은 값이 '있을 수도 있고 없을 수도 있음'을 나타내는 기능입니다. 즉, 옵셔널 타입은 값이 '있거나'(Some) '없을 수 있음'(None 혹은 nil)을 나타냅니다. 하지만 Int!와 Int? 사이에는 중요한 차이점이 있습니다. 변수가 nil 값을 가질 수 있는지를 명시적으로 표시하며 이를 통해 코드의 안전성을 높이고, nil 값에 대한 예기치 않은 접근으로 인한 오류를 방지할 수 있다는 장점이 있습니다. 추가적으로 nil 상태의 값을 !로 풀어버리게 되면 Crush가 일어나 앱이 다운될 수 있으니 주의 해야 합니다. - 특징 Int! (암시적 추출 옵셔널) Int? (옵셔널)
정의
값이 있거나nil일 수 있지만, 사용 시 옵셔널을 자동으로 추출한다.
값이 있거나nil일 수 있으며, 값에 접근하기 위해서는 명시적으로 추출해야 한다.
사용 시점
변수나 상수가 선언된 이후에는nil이 아니라고 확신할 때 사용. 실제로nil이라면 런타임 오류 발생.
값의 존재 여부가 확실치 않을 때 사용. 값에 접근하기 전에nil체크가 필요.
안전성
덜 안전.nil접근 시 런타임 오류를 일으킬 수 있음.
더 안전.nil체크나 옵셔널 바인딩을 통해 안전하게 값을 처리할 수 있음.
사용 예시
클래스의 초기화가 완료된 후에는 항상 값이 있다고 가정할 때. 예: IBOutlet 연결
값의 존재 여부가 불확실할 때. 예: 딕셔너리에서 키로 값을 조회할 때
추출 방법
자동으로 추출되므로 별도의 처리가 필요 없음. 그러나 수동으로도 추출할 수 있음.
if let,guard let,!등을 사용하여 명시적으로 추출해야 함.
웹 백엔드 작업으로 인해 Swift에 신경을 쓰지 못하다보니 기본적인 문법이 조금씩 헷갈렸습니다. 여러분들도 초석을 만들면 꼭 다져놓고 두들겨보는 습관을 들이시는걸 추천합니다..!!