/**
함수 사용시 주의점
*/
// 1. 함수의 파라미터에 대한 정확한 이해
func someAdd(_ a: Int) -> Int {
// a = a + 1 // a 는 let (상수라 변경이 불가능)
var b = a + 1 // 다른 변수를 선언하여 리턴하는 방식을 사용
return b
}
someAdd(5)
// 2. 함수 내의 변수의 Scope(스코프)
func sumOfNum(_ a: Int) -> Int{
var sum = 0
sum += a
return sum
}
// sum // scope가 안쪽 밖에 안되서 실행 x
sumOfNum(4)
// 3. return 키워드의 정확한 이해
func numberPrint(n num: Int) -> Int {
return num
}
// 리턴 타입이 없는 경우
func numberPrint2(n num: Int){
if num >= 5 {
print("숫자가 5이상입니다.")
return // 함수를 벗어나기 위한 리턴
}
print("숫자가 5미만입니다.")
}
numberPrint2(n: 3)
numberPrint2(n: 7)
// 4. 리턴타입이 있는 경우, 함수의 실행문의 의미
// 리턴 타입이 있는 함수를 호출하는 경우, 함수를 호출하는 것은 표현식( 표현식의 결과는 함수가 리턴하는 값)
func nameString() -> String{
return "스티브"
}
var yourName: String = nameString()
if nameString() == "스티브"{
print("이름이 일치합니다.")
}
// 5. 함수의 중첩 사용 - 중첩된 함수(Nested Functions)
// 함수 안에 함수를 작성할 수도 있다.
// (함수 내부에 있는 함수는 밖에서 사용이 불가능)
// 함수를 제한적으로 사용하고 싶을 때, 사용
func chooseStepFunction(backword: Bool, value: Int) -> Int{
func stepForward(input: Int) -> Int{
return input + 1
}
func stepBackward(input: Int) -> Int{
return input - 1
}
if backword {
return stepBackward(input: value)
}else {
return stepForward(input: value)
}
}
var value = 7
chooseStepFunction(backword: true, value: value)