Swift의 Function 구문에 대해 정리하려고 한다. 다른 언어와 마찬가지로 Function은 resuable block으로, 코드의 개선과 유지보수를 위해 필수적이다.
Swift는 아래와 같은 Syntax로 함수를 정의할 수 있다.
func functionName(parameters: ParameterType) -> ReturnType {
// Function body
// Perform tasks and return a value of ReturnType
}
func
: Function을 정의functionName
: Function의 이름parameter
: Input 값을 의미한다. 즉, 매개변수. 이때 ParameterType
을 정의해야 한다.ReturnType
: Void가 아닌 경우, 반환값의 Type을 정의한다.다른 언어와 마찬가지로, parameter(매개변수)는 0개 이상으로 설정할 수 있으며, parameter가 존재하는 경우 Type을 지정해야 한다
func greet(name: String) {
print("Hello, \(name)!")
}
Function Calling :
greet(name : "swift!")
Output :
Hello swift
Return Value가 존재하는 경우, ->
기호를 이용하여 함수를 정의할 때 Return Type을 설정한다. 만약, Return Value가 없는 경우에는 생략해도 된다.
// a와 b의 덧셈을 하고, Int 값으로 반환
func add(a: Int, b: Int) -> Int {
reutrn a +b
}
// Return Value가 없는 경우
func sayHello() {
print("Hello")
}
Return Value가 존재하는 경우, Variable에 바로 사용할 수 있다.
let sum = add(a:3, b:5)
Swift에서는 함수의 Argument를 위해 외부, 내부 Parameter(매개변수)의 이름을 설정할 수 있다.
외부 Parameter는 함수가 호출될 때 사용되며, 내부 Parameter는 함수 내부에서 사용된다.
func great(to name : String) {
print("Hello, \(name)")
}
greate(to: "Alice")
함수의 Parameter에서 Default Value가 필요한 경우, 아래와 같이 함수 Parameter의 Default Value를 설정할 수 있다.
func power(base: Int, exponent: Int = 2) -> Int {
return Int(pow(Double(base), Double(exponent)))
}
let result = power(base: 3) // Uses default exponent of 2
Swift에서는 Java나 C처럼, Parameter에 해당 변수의 reference를 넘기게 되면, Scope에 상관없이 해당 변수의 값을 수정할 수 있다. 이때, 정의할 때 parameter Type 앞에 inout
을 사용하고, 호출할 때 &
를 사용한다.
func increment(value : inout Int) {
value += 1
}
var num = 5
increment(value : &num)
Java와 유사하게, Function Overloading도 가능하다. 이때, 함수의 이름은 같게, parameter의 Type만 다르게 정의한다!
func process(number : Int) {
// Process integer
}
func process(text: String) {
// Process string
}