iOS/Swift

함수 2편 (매개변수, 데이터 타입)

밤새는 탐험가89 2024. 1. 14. 03:24

 

매개변수 기본값 

매개변수마다 기본값 지정 가능

func sayHello(from name: String, to myName: String = "Jenny") -> String {
    return "Hello \(name)! I`m \(myName)"
}


// myName 매개변수의 기본값 사용
let toJenny: String = sayHello(from: "Tom")
print(toJenny)
// Hello Tom! I`m Jenny


// 기본값 외 값 할당 
let toMike: String = sayHello(from: "Jerry", to: "Cole")
print(toMike)
// Hello Jerry! I`m Cole

 

기본값이 있는 매개변수는 맨 마지막에 위치,

기본값의 유무보단, 중요한 매개변수는 맨 앞에 위치 ★ 

 

 

가변 매개변수

매개변수로 몇 개의 값을 받을지 모를 때 사용

가변 매개변수로 들어온 인자 값은 배열처럼 사용

 

함수 마다 가변 매개변수는 1개만 가질 수 있음 

func fruitInfo(market: String, list fruit: String...) -> String {
    var result: String = "\(market)에 있는 과일은 다음과 같습니다. "
    
    for item in fruit {
        result += "\(item)" + " "
    }
    return result
}

let marketA: String = fruitInfo(market:"MarketA", list: "Apple", "Banana","Kiwi")
print(marketA)

// MarketA에 있는 과일은 다음과 같습니다. Apple Banana Kiwi

 

 

 

반환이 없는 함수 

반환 값이 없을 경우에는 

반환 타입생략 또는 "Void" 키워드를 사용

 

반환 값이 없는 함수의 정의와 사용

func sayHello() {
    print("Hello")
}

sayHello()
// Hello


func sayBye()-> Void {
    print("Bye")
}
sayBye()
// Bye

 

 

 

데이터 타입으로서의 함수 

스위프트에서 함수는 1급 객체 

하나의 데이터 타입으로 사용 가능 

(매개변수 타입의 나열) -> 반환 타입

 

 

 

함수 타입의 사용

func addNum(_ a: Int, _ b: Int) -> Int {
    return a + b
}

let checkNum: (Int, Int) -> Int = addNum

print(checkNum(1,2))

 

addNum의 함수 타입(Int, Int) -> Int 

checkNum 이라는 변수는 (Int, Int) 를 받아 Int로 반환하는 함수 타입

checkNum에 addNum 이라는 함수를 할당

 

 

 

전달인자로 함수를 전달받는 함수

func addNum(_ a: Int, _ b: Int) -> Int {
    return a + b
}

func printResult(_ resultNum: (Int, Int)-> Int, _ a: Int, _ b: Int) {
    print("\(resultNum(a,b))")
}

printResult(addNum, 1,2)
// 3

 

printResult 함수의 매개변수 resultNum은 (Int, Int) -> Int 의 함수 타입

printResult 함수를 호출할 때 resultNum의 전달인자로 addNum 함수를 받음 

 

'iOS > Swift' 카테고리의 다른 글

옵셔널  (0) 2024.01.16
함수 3편 (중첩 함수)  (1) 2024.01.15
함수 1편 (함수 정의 및 호출)  (0) 2024.01.14
흐름 제어 (반복문)  (0) 2024.01.12
흐름 제어 (switch 구문)  (0) 2024.01.11