아카이브로 돌아가기

TIL

20221024

Any모든 타입 지칭AnyObject모든 클래스 타입을 지칭하는 프로토콜AnyObject는 클래스의 인스턴스만 수용 가능nil값이 없음을 의미.1\. 매개변수 기본값함수의 매개변수에 기본값을 미리 지정 가능기본값을 갖는 매개변수는 매개변수 목록 중 뒤쪽에 위치하는 것이

Velog 원문 보기

데이터 타입

  1. Any
  • 모든 타입 지칭
var anyData: Any = 100
anyData = "String도 가능"
anyData = 123.45
  1. AnyObject
  • 모든 클래스 타입을 지칭하는 프로토콜
  • AnyObject는 클래스의 인스턴스만 수용 가능
class AnyClass {}
var someObject: AnyObject = AnyClass()
  1. nil
  • 값이 없음을 의미
var anyData: Any = 100
var someObject: AnyObject = AnyClass()
anyData = nil // 컴파일 오류
someObject = nil // 컴파일 오류

.

함수 고급

  1. 매개변수 기본값
  • 함수의 매개변수에 기본값을 미리 지정 가능
  • 기본값을 갖는 매개변수는 매개변수 목록 중 뒤쪽에 위치하는 것이 좋다.
func greeting(name: String, job: String = "designer") {
    print("Hi! I'm \(name), \(job).")
}
// 기본값을 갖는 매개변수는 호출시 생략 가능
greeting(name: "snack") // Hi! I'm snack, designer.
  1. 전달인자 레이블
  • 함수 호출 시 매개변수의 역할을 명확하게 표현하기 위한 레이블
// 함수 내부에서는 매개변수 이름을 사용
func greeting(name me: String, job work: String) {
    print("Hi! I'm \(me), \(work).")
}
// 함수 호출 시에는 전달인자 레이블을 사용
greeting(name: "snack", job: "designer") // Hi! I'm snack, desinger.
  1. 가변 매개변수
  • 전달 받을 매개변수의 개수를 알기 어려울 때 사용
func greeting(name: String, job: String...) {
    print("Hi! I'm \(name), \(job).")
}
greeting(name: "snack", job: "designer", "developer")
// Hi! I'm snack, ["designer", "developer"].
  1. 데이터 타입으로서의 함수
  • 스위프트에서의 함수는 일급객체
  • 일급객체(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.
아카이브로 돌아가기