func hasAnyMatches(list: Int[], condition: Int -> Bool) -> Bool {
for item in list {
if condition(item) {
return true
}
}
return false
}
func lessThanTen(number: Int) -> Bool {
return number < 10
}
var numbers = [20, 19, 7, 12]
hasAnyMatches(numbers, lessThanTen)
Это пример на Свифт языка программирования.Функция стрижа, принимая другую функцию аргументов
Но в этом примере я хочу изменить
func lessThanTen(number: Int) -> Bool {
return number < 10
}
в
func lessThanBenchmark(number: Int, benchMark: Int) -> Bool {
return number < 10
}
поэтому я также изменить этот пример
func hasAnyMatches(list: Int[], condition: (Int, benchmark: Int) -> Bool) -> Bool {
for item in list {
if condition(item, benchmark) {
return true
}
}
return false
}
func lessThanBenchmark(number: Int, benchmark: Int) -> Bool {
return number < benchmark
}
var numbers = [20, 19, 7, 12]
hasAnyMatches(numbers, lessThanBenchmark)
Однако, я получил ошибка.
<REPL>:155:28: error: use of unresolved identifier 'benchmark'
if condition(item, benchmark) {
В конце концов, я должен написать, как этот стиль
func hasAnyMatches(list: Int[], condition: (Int, Int) -> Bool, benchmark:Int) -> Bool {
for item in list{
if condition(item, benchmark) {
return true
}
}
return false
}
func lessThanBenchmark(number: Int, benckmark: Int) -> Bool {
return number < benckmark
}
var numbers = [20, 19, 7,12]
hasAnyMatches(numbers, lessThanBenchmark, 10)
Как я могу пройти тест кондиционировать так же, как его собственный параметр?