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)
这是关于 Swift编程语言的例子。
但是在这个例子中,我想要改变
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)
如何将基准传递给条件,就像它自己的参数一样?
答案 0 :(得分:0)
基准是功能的论据。
condition: (Int, benchmark: Int) -> Bool
这行代码意味着condition是一个返回Bool值的函数,可以接受两个参数:Int作为第一个参数,而benchmark:Int是第二个参数。
您可以在条件内调用基准。
像那样说:func hasAnyMatches(list: Int[], condition: (Int, benchmark: Int) -> Bool) -> Bool {
for item in list {
if condition(item, benchmark: 15) {
return true
}
}
return false
}
15是您要使用的值