//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
이라는 함수를 입력받아서 함수가 실행되고 있습니다.
Q. 1~10 사이의 숫자가 들어왔을 때 true를 리턴하는 함수를 작성하시오.
Q. 과일을 장보기 위해서 마트에 왔다. 그런데, 집에 있는 과일은 다시 사고 싶지 않다.
그러므로 "fruitsInHome" 배열에 있는 과일인지 아닌지 판별하는 함수를 만들어라.
정답은 아래로 스크롤
ㅤ
ㅤㅤㅤㅤ
ㅤ
ㅤ
ㅤ
ㅤ
ㅤ
ㅤ
ㅤ
ㅤ
ㅤ
ㅤ
ㅤ
ㅤㅤ
ㅤ
ㅤ
ㅤ
ㅤ
ㅤ
ㅤ
ㅤ
ㅤ
ㅤ
ㅤ
ㅤ
ㅤㅤ
ㅤ
/// - 예제 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)