[Swift] 함수의 타입

Uno·2021년 8월 6일
0

Swift-Hanon

목록 보기
2/3

함수의 리턴 타입이 있는 경우와 없는 경우



//MARK: - 1. 리턴 타입이 있는 경우
func addTwoInts(_ a: Int, _ b: Int) -> Int {
    a + b
}

func multiplyTwoInts(_ a: Int, _ b: Int) -> Int {
    a * b
}

//MARK: - 2. 리턴 타입이 없는 경우
func printHello() { print("Hello") }

-> 가 없으면 리턴타입이 없는 경우이고, 있으면 리턴타입이 있는 경우 입니다.

함수를 파라미터로 받는 경우


//MARK: - 3. 함수를 파라미터로 입력받는 변수
var mathFunc: (Int, Int) -> Int = addTwoInts

func hasAnyMatches(list: [Int], condition: (Int) -> Bool) -> Bool {
    
    // 1. 입력 받은 Array<Int> 를 for문 순회한다.
    for item in list {
        // 2. 입력 받은 func에 array의 요소를 할당하고 Boolean값을 받는다.
        if condition(item) {
            // 3. true 인 경우, true를 리턴한다.
            return true
        }
    }
    // 3. false 인 경우, false를 리턴한다.
    return false
}

func lessThanTen(number: Int) -> Bool {
    return number < 10
}

var numbers = [99, 19, 4, 14]
hasAnyMatches(list: numbers, condition: lessThanTen)

위 코드를 보시면, hasAnyMatches 에 condition 파라미터가 조금 독특하게 생겼죠.

파라미터로 함수를 받는 경우 이런식으로 작성하게 됩니다.

그래서 func lessThanTen 이라는 함수를 입력받아서 함수가 실행되고 있습니다.

예제 -1

Q. 1~10 사이의 숫자가 들어왔을 때 true를 리턴하는 함수를 작성하시오.

예제 -2

Q. 과일을 장보기 위해서 마트에 왔다. 그런데, 집에 있는 과일은 다시 사고 싶지 않다.
그러므로 "fruitsInHome" 배열에 있는 과일인지 아닌지 판별하는 함수를 만들어라.


정답은 아래로 스크롤


ㅤㅤㅤㅤ











ㅤㅤ











ㅤㅤ

soluotion


/// - 예제 1
/// Q. 1~10 사이의 숫자가 들어왔을 때 true를 리턴하는 함수를 작성하시오.

func betweenOneAndTen(number: Int) -> Bool {
    return number >= 1 && number <= 10
}

let inputArr = [1,5,10]
hasAnyMatches(list: inputArr, condition: betweenOneAndTen)




/// - 예제 2
/// Q. 과일을 장보기 위해서 마트에 왔다. 그런데, 집에 있는 과일은 다시 사고 싶지 않다.
/// 그러므로 "fruitsInHome" 배열에 있는 과일인지 아닌지 판별하는 함수를 만들어라.

var fruitsInHome: [String] = ["사과", "수박", "바나나"]

func hasFruits(fruit: String, hasFruits: [String]) -> Bool {
    
    let fruitsList = hasFruits
    
    for item in fruitsList {
        return checkFruits(fruit: fruit, hasFruits: item)
    }

    return false
}

func checkFruits(fruit: String, hasFruits: String) -> Bool {
    
    if hasFruits.contains(fruit) {
        return true
    }
    return false
}

hasFruits(fruit: "사과", hasFruits: fruitsInHome)
profile
iOS & Flutter

0개의 댓글