- 함수란? 애플리케이션에서의 동작의 기본 단위를 의미한다.
- 함수 작성 방법함수 정의 및 사용
1. 함수 정의
func greeting() {
print("Hello Swift")
}
2. 함수 사용
greeting() - 함수의 실행 결과 반환 : 반환 타입 중 Void는 생략 가능 그 외에는 모두 "-> 반환타입"으로 명시한다.함수의 실행 및 반환
1. 함수 정의
func greeting() -> String {
return "Hello Swift"
}
2. 함수 사용
var str = greeting()
print(str) // Hello Swift 출력 - 함수 파라미터 : 함수 동작에 필요한 정보를 전달하는데 사용된다.
- 함수 파라미터 정의함수 파라미터 정의
1. 파라미터 1개
func greeting(person : String) {
print("Hello \(person)")
}
2. 파라미터 2개
func greeting(person : String, emotion : String) {
print("Hello \(person) with \(emotion)")
} - 파라미터 이름의 종류
- 내부 파라미터 : 함수 내부에서 접근 및 사용한다.함수 내부 파라미터
1. 내부 파라미터
func greeting(person : String) {
print("Hello \(person)")
}
// 내부 파라미터는 함수 내부에서 접근 및 사용에 쓰인다. - 외부 파라미터 : 함수 내부에서 접근 및 사용할 수 없으며, 외부에서 함수로 필요한 정보를 전달하는 역할을 한다.함수 외부 파라미터
1. 내부 파라미터와 외부 파라미터의 이름이 동일
func greeting(person : String) {
print("Hello \(person)")
}
greeting(person : "My Friend") // Hello My Friend 출력
// 외부 파라미터는 함수 내부로 필요한 정보를 전달 시에 사용
2. 외부 파라미터 이름을 수동을 설정
func greeting(who person : String) {
print("Hello \(person)")
}
greeting(who : "Jun") // Hello Jun 출력 - 파라미터 기본값 설정 방법 : 기본값 설정은 생략 가능하며, 함수 사용 시에 외부에서 함수로 넘겨주는 값이 없는 경우에만 사용된다.파라미터 기본값 설정
func greeting(person : String = "Mom") {
print("Hello \(person)")
}
greeting(person : "My Friend") // Hello My Friend 출력
greeting() // Hello Mom 출력 - 파라미터는 함수 내부에서 상수로 사용하여 변경 시 에러가 발생하는데 변경이 필요한 경우는 inout 키워드로 변경가능하도록 한다.함수 내부에서 파라미터 변경
func tryParamValueChange1(arg : Int = 0) {
arg = arg + 1 // 에러 발생
}
func tryParamValueChange2(arg : inout Int = 0) {
arg = arg + 1 // 에러 발생하지 않고 변경 가능
}
tryParamValueChange2(1) // 2로 변경
func swapTwoValue(_ arg1 : inout Int, _ arg2 : inout Int) {
let temp = arg1
arg1 = arg2
arg2 = temp
}
var value1 = 1
var value2 = 2
swapTwoValue(&value1, &value2)
// value1에는 2, value2에는 1로 변경되며 &로 사용해야 변경 - 함수와 옵셔널 : 함수의 반환 타입, 함수 파라미터에 옵셔널로 선언되면 nil 사용이 가능하다.
- 함수의 반환 타입에 옵셔널 선언 : 반환 타입에 nil 반환이 가능하다.함수 반환 타입에 옵셔널 선언
func nilReturnFunction() -> Int? {
return nil
}
if let ret = nilReturnFunction() {
print("실행 결과 : \(ret)") // 실행 결과 : nil 출력
} - 함수 파라미터에 옵셔널 선언 : 파라미터 사용 전에 반드시 nil 여부를 판단해서 사용하도록 한다. (nil 여부 판단은 if 문이나 guard 문을 이용한다.)함수 파라미터에 옵셔널 선언
func greeting(person : String, emotion : String?) {
guard let str = emotion else {
print("Hello \(person)") // emotion이 nil 인 경우 출력
return
}
print("Hello \(person) with \(emotion)")
// emotion이 nil이 아닌 경우 출력
}
greeting(person : "My Friend", emotion : "play")
// Hello My Friend with play 출력
greeting(person : "Mom", emotion : nil)
// Hello Mom 출력