Dev/Swift

Swift: 함수 기초(function)

두넌 2023. 5. 14.

DAY 08

함수 기초(function)

 

함수(function)


특정 작업을 수행하는 코드 불록

매개변수(parameter, 인자)와 인수(argument)는 차이점이 있음

함수 정의부의 값을 parameter, 호출시의 값은 argument라고 부름

 

메서드(method)


특정 클래스, 구조체, 열거형 내의 함수

함수를 스위프트 클래스 내에 선언하면 메서드라 부름

 

함수를 선언하는 방법

func <함수명> (<매개변수 이름>: <매개변수 타입>, <매개변수 이름>: <매개변수 타입>, ...) -> <반환값 타입> {
    // function code
}
func sayHello() {
    print("Hello")
}

리턴값이 없으면(-> Void) 지정하지 않아도 된다

 

함수의 자료형

func add(x: Int, y: Int) -> Int {
    return(x+y)
}

add(x:10, y:20)

add함수의 자료형은 print(type(of:add))

(Int, Int) -> Int 이다

 

내부매개변수명, 외부매개변수명


  • 외부매개변수명(argument lable)
  • 내부매개변수명(parameter name)
func add(first x: Int, second y: Int) -> Int 
    return(x+y)
}
add(first:10, second:20)
// add(x:10, y:20)은 오류

func 함수이름(외부매개변수명 내부매개변수명``: 자료형)

 

first, second : 외부 매개변수명

x, y : 내부 매개변수명

func add(x: Int, y: Int) -> Int {
    return(x+y)
}
add(x:10, y:20)

 

다음과 같이 외부 매개변수명을 생략하면 내부 매개변수명이 외부 매개변수명까지 겸함

func add(_ x: Int, _ y: Int) -> Int {
    return(x+y)
}
print(add(10, 20))
// 외부매개변수명 생략 가능

func add(_ x: Int, with y: Int) -> Int {
    return(x+y)
}
print(add(10, with:20))
// 첫번째 외부매개변수명만 생략하는 경우 많음
// 두번째 매개변수부터는 외부매개변수 사용
// 제일 많이 쓰는 방법

#function 리터럴(literal)


Swift 함수명

함수명(외부매개변수명:외부매개변수명: ...)

#function 리터럴을 사용하여 얻을 수 있음

func add(first x: Int, second y: Int) -> Int {
    print(#function) // add(first:second:)
    return(x+y)
}

output

add(first:second:)

 

아래 함수에서 #function의 출력결과는 무엇일까?

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return items.count
}

첫 번째 parameter에서 외부 매개변수명을 생략했기 때문에 tableView(_:numberOfRowsInSection:) 라고 할 수 있다

댓글