20221024
Any모든 타입 지칭AnyObject모든 클래스 타입을 지칭하는 프로토콜AnyObject는 클래스의 인스턴스만 수용 가능nil값이 없음을 의미.1\. 매개변수 기본값함수의 매개변수에 기본값을 미리 지정 가능기본값을 갖는 매개변수는 매개변수 목록 중 뒤쪽에 위치하는 것이
Read original on Velog ↗Original article in Korean
데이터 타입
- Any
- 모든 타입 지칭
var anyData: Any = 100
anyData = "String도 가능"
anyData = 123.45
- AnyObject
- 모든 클래스 타입을 지칭하는 프로토콜
- AnyObject는 클래스의 인스턴스만 수용 가능
class AnyClass {}
var someObject: AnyObject = AnyClass()
- nil
- 값이 없음을 의미
var anyData: Any = 100
var someObject: AnyObject = AnyClass()
anyData = nil // 컴파일 오류
someObject = nil // 컴파일 오류
.
함수 고급
- 매개변수 기본값
- 함수의 매개변수에 기본값을 미리 지정 가능
- 기본값을 갖는 매개변수는 매개변수 목록 중 뒤쪽에 위치하는 것이 좋다.
func greeting(name: String, job: String = "designer") {
print("Hi! I'm \(name), \(job).")
}
// 기본값을 갖는 매개변수는 호출시 생략 가능
greeting(name: "snack") // Hi! I'm snack, designer.
- 전달인자 레이블
- 함수 호출 시 매개변수의 역할을 명확하게 표현하기 위한 레이블
// 함수 내부에서는 매개변수 이름을 사용
func greeting(name me: String, job work: String) {
print("Hi! I'm \(me), \(work).")
}
// 함수 호출 시에는 전달인자 레이블을 사용
greeting(name: "snack", job: "designer") // Hi! I'm snack, desinger.
- 가변 매개변수
- 전달 받을 매개변수의 개수를 알기 어려울 때 사용
func greeting(name: String, job: String...) {
print("Hi! I'm \(name), \(job).")
}
greeting(name: "snack", job: "designer", "developer")
// Hi! I'm snack, ["designer", "developer"].
- 데이터 타입으로서의 함수
- 스위프트에서의 함수는 일급객체
- 일급객체(First Class Citizen)
- 변수나 상수에 저장 및 할당 할 수 있다.
- 파라미터(객체의 인자)로 전달 할 수 있다.
- 함수(객체)에서 return 할 수 있다.
- 반환 타입 생략 불가능
// 함수의 타입 표현
(첫 번째 매개변수 타입, 두 번째 매개변수 타입, ...) -> 반환타입
func greeting(name: String, job: String) {
print("Hi! I'm \(name), \(job).")
}
var someFunction: (String, Stiring) -> Void = greeting(name:job:)
someFunction("snack", "designer") // Hi! I'm snack, designer.
// 타입이 다른 함수는 할당할 수 없다.
func runAnother(function: (String, String) -> Void {
function("snack", "designer")
}
runAnother(function: greeting(name:job:)) // Hi! I'm snack, designer.