함수 (Functions) - 함수 정의와 호출 (Defining and Calling Functions)

00yhsp·2024년 4월 7일

함수, 인수 라벨을 정의하고 호출하고 반환값을 사용한다.

함수 (Functions) 는 특정 작업을 수행하는 코드 모음 형태이다.
무슨 동작을 하는지 함수에 특정 이름을 부여할 수 있으며 작업을 수행하기 위해 함수를 "호출" 할 때 사용된다.

Swift의 통합 함수 구문은 파라미터 이름이 없는 단순한 C 스타일 함수에서 각 파라미터에 대한 이름과 인수가 있는 복잡한 Objective-C 스타일 메서드에 이르기까지 모든 것을 표현할 수 있을만큼 유연하다.
파라미터는 함수 호출을 단순화 하기위해 기본값을 제공할 수 있으며 함수가 실행을 완료하면 전달된 변수를 수정하는 in-out 파라미터로 전달될 수 있다.

Swift의 모든 함수에는 함수의 파라미터 타입과 반환 타입으로 구성된 타입이 있다. Swift의 다른 타입과 마찬가지로 이 타입을 사용할 수 있으므로 함수를 파라미터로 다른 함수에 전달하고 함수에서 함수를 반환하기가 쉽다. 함수는 중첩된 함수 범위내에서 유용한 기능을 캡슐화하기 위해 다른 함수 내에 작성될 수도 있다.

함수 정의와 호출 (Defining and Calling Functions)

함수를 정의할 때 파라미터 라고 알고 있는 함수가 입력으로 받는 하나 이상의 타입으로 된 값을 선택적으로 정의할 수 있다. 또한 반환 타입 이라고 알고 있는 작업이 완료 되었을 때 함수가 다시 전달하는 값의 타입을 선택적으로 정의할 수 있다.

모든 함수는 함수가 수행하는 작업을 설명하는 함수 이름을 가지고 있다. 함수를 사용하려면 함수의 이름으로 "호출"하고 함수의 파라미터와 일치하는 인수라고 알려진 입력 값을 전달해야 한다. 함수의 인수는 항상 함수의 파라미터 순서와 동일하게 제공해야 한다.

아래 예제의 함수는 사람의 이름을 입력으로 받아 그 사람의 인사말을 반환하기 때문에 greet(person:) 이라 불린다. 이것을 수행하기 위해 person 이라 불리는 String 값인 하나의 파라미터와 그 사람의 인사말을 포함한 String 반환 타입을 정의한다.

func greet(person: String) -> String {
    let greeting = "Hello, " + person + "!"
    return greeting
}

이 정보의 모든 것은 func 키워드를 앞에 붙여 함수를 정의한다. 반환 화살표 -> (하이픈 뒤에 오른쪽 방향 꺽쇄를 붙임) 뒤에 반환 타입의 이름을 붙여 함수의 반환 타입을 나타낸다.

정의는 함수가 수행하는 작업, 수신할 것으로 예상되는 작업 및 완료 시 반환되는 작업을 설명한다. 정의를 통해 코드의 다른 위치에서 함수를 명확하게 호출할 수 있다.

print(greet(person: "Anna"))
// Prints "Hello, Anna!"
print(greet(person: "Brian"))
// Prints "Hello, Brian!"

greet(person: "Anna") 와 같이 person 인수 뒤에 String 값을 전달하여 greet(person:) 함수를 호출한다. 함수는 String 값을 반환하므로 greet(person:) 은 위에서와 같이 반환 값의 문자열을 출력하기 위해 print(_:separator:terminator:) 함수로 래핑할 수 있다.

Note:
print(_:separator:terminator:) 함수는 첫번째 인수의 라벨을 가지고 있지 않고 다른 인수는 기본값을 가지고 있으므로 선택이다.
함수 구문의 이러한 변형은 아래 함수 인수 라벨과 파라미터 이름 (Function Argument Labels and Parameter Names) 과 파라미터 기본값 (Default Parameter Values) 에서 자세히 설명한다.

greet(person:) 함수의 본문은 greeting 으로 불리는 새로운 String 상수 정의와 간단한 인사말 메세지 설정으로 시작한다. 이 인사말은 return 키워드를 사용하여 함수의 바깥으로 전달된다. return greeting 이라는 코드 줄에서 함수는 실행을 완료하고 인사말의 현재값을 반환한다.

다른 입력값으로 greet(person:) 함수를 여러번 호출할 수 있다. 위의 예제에서 "Anna" 와 "Brian" 의 입력값으로 호출할 경우 어떤 일이 생기는지 보여 준다. 이 함수는 각 경우에 맞춰 인사말을 반환한다.

이 함수의 본문을 더 짧게 만들기위해 메세지 생성과 반환 구문을 한줄로 결합할 수 있다.

func greetAgain(person: String) -> String {
    return "Hello again, " + person + "!"
}
print(greetAgain(person: "Anna"))
// Prints "Hello again, Anna!"
profile
iOS Dev

0개의 댓글