swift.org를 참고하여 정리한 글입니다.
Swift.org
Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns.
www.swift.org
Function(함수)에 대해 알아봅시다.
함수는 위와 같은 형태로 생겼습니다.
함수 이름, 파라미터, 반환 타입, 실행될 코드 블럭이 포함됩니다.
Return Value(리턴값)
별로도 값을 리턴하지 않는 함수도 존재합니다.
정확히는 Void 타입을 반환합니다.
Void는 값이 없는 타입을 나타내며, nil과는 다른 개념입니다.
// 파라미터와 리턴 타입이 없는 함수
func withoutParametersAndReturnType() {
print("withoutParametersAndReturnType")
print(#function)
}
// String 값을 반환하는 함수
func sayHelloWorld() -> String {
return "hello, world"
}
Parameter(파라미터)
// Int 타입의 파라미터가 있는 함수
func convertIntToString(intValue: Int) -> String {
return "\(intValue)"
}
intValue 파라미터는 Int타입의 인자(Argument)를 받습니다.
// 함수 내에서 사용될 이름을 따로 지정해 줄 수 있다.
func addMorningSession(juniorLearner name: String) -> String{
return name + " Morning"
}
여러 개의 파라미터를 선언할 수 있으면 파라미터의 기본 값을 설정할 수도 있습니다.
func add(x: Int, y: Int = 8) -> Int {
return x + y
}
add(x: 5, y: 2) // 7
add(x: 5) // 13
파라미터 라벨을 생략할 수도 있습니다.
func printAddResult(_ x: Int, _ y: Int) {
let result = x + y
print(result)
}
printAddResult(5, 8)
inout
파라미터는 기본적으로 함수 내에서 상수로 사용됩니다.
함수 외부의 변수를 파라미터를 통해 전달하여 값을 변경하고 싶을 경우에 inout 키워드를 사용합니다.
var xPoint = 0
var yPoint = 0
print(xPoint, yPoint) // 0, 0
func move5Point(x: inout Int, y: inout Int) {
x += 5
y += 5
}
move5Point(x: &xPoint, y: &yPoint)
print(xPoint, yPoint) 5, 5
함수 타입
함수의 인자 타입과 리턴 타입은 하나의 함수 타입으로 묶입니다.
위에서 사용된 예제 함수들을 다시 확인해봅시다.
withoutParametersAndReturnType()
// Type: () -> Void or () -> ()
sayHelloWorld() -> String
// Type: () -> String
func convertIntToString(intValue: Int) -> String
// Type: (Int) -> String
add(x: Int, y: Int = 8) -> Int
// Type: (Int, Int) -> Int
// Example
func mathAndReturnString(_ mathFunc: (Int,Int) -> Int, x: Int, y: Int) -> String
// Type: ((Int,Int) -> Int, Int, Int) -> String
'iOS > Swift' 카테고리의 다른 글
[Swift] 구조체 (0) | 2022.06.16 |
---|---|
[Swift] Optional(옵셔널) (0) | 2022.06.09 |
[Swift] Conditional & Loop (0) | 2022.06.05 |
[Swift] Collection Type (0) | 2022.06.04 |
[Swift] 기본 데이터 타입 (0) | 2022.06.04 |