Swift/Swift-Basica

Swift (4) - 함수

peter.j 2022. 8. 19. 21:34

1. 기본적인 함수 정의 및 호출

func 함수명(파라미터: 파라미터타입) -> 반환타입 {
    ... some code ...
    return 반환값
}

/* 정의 예시 */
func addOne(num: Int) -> Int {
    return num + 1
}

/* 호출 예시 */
var result: Int = addOne(10)

 

2. 외부명 및 내부명

Swift는 신기하게도 함수내부에서 사용하는 파라미터이름과 호출부에서 사용하는 파라미터이름을 구분할 수 있습니다.

func 함수명(외부명 내부명: 타입) -> 반환타입 {}

 

그리고 아래와 같이 사용할 수 있습니다.

/* 함수 정의 */
func greet(name n: String) -> String {
    return "Hello, \(n)!"
}

/* 함수 호출 */
greet(name: "Peter")

 

만약 외부명 내부명이 따로 나뉘어져 있지 않고 하나의 파라미터이름만 사용할 경우, 해당 파라미터이름이 내부명 및 외부명 모두로 사용됩니다.

/* 함수 정의 */
func greet(name: String) -> String {
    return "Hello, \(name)!"
}

/* 함수 호출 */
greet(name : "Peter")

 

 

3. 기본값

함수의 파라미터에는 전달되지 않았을 경우에 대한 기본 값을 지정할 수 있습니다.

/* 함수 정의 */
func greeting(name: String = "Peter") -> String {
    return "Hello, \(name)!"
}

/* 함수 호출 */
greet()

 

 

4. 가변파라미터

파라미터 타입 뒤에 ...를 붙이면, 파라미터를 해당 타입의 배열로 받을 수 있습니다.

/* 함수 정의 */
func sum(nums: Int...) -> Int {
    var result: Int = 0
    for i in nums {
        result += i
    }
    return result
}

/* 함수 호출 */
var result = sum(1, 2, 3, 4, 5)

 

 

5. inout 파라미터

C언어의 pointer와 비슷한 개념입니다.

 

함수 정의의 파라미터이름 앞에 inout을 표시하고 호출부에서 인자 앞에 &를 붙여 전달하면,

호출 인자의 메모리주소가 전달되어 해당 메모리주소의 값을 직접 변경할 수 있습니다.

/* 함수 정의 */
func control(inout target: Int) -> Void {
    target += 1
}

/* 함수 호출 */
var number = 1
control(&number)

number // 2

 

 

 

참고

https://www.devkuma.com/docs/swift/%ED%95%A8%EC%88%98/

 

Swift 입문 | 함수

개발 지식 공유

www.devkuma.com

 

사업자 정보 표시펼치기/접기
1 | g | asdf | 사업자 등록번호 : 123-12-12345 | TEL : 010-111-1111 | Mail : asdf@gmail.com | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기