swift的函数,取其参数的另一个函数 func hasAnyMatches(列表:Int[],条件:Int->Bool)->Bool{ 对于列表中的项目{ 如果条件(项目){ 返回真值 } } 返回错误 } func lessThanTen(数字:Int)->Bool{ 返回编号Bool{ 返回编号Bool{ 返回编号Bool)->Bool{ 对于列表中的项目{ 如果条件(项目、基准){ 返回真值 } } 返回错误 } func-lessthanbanchmark(数字:Int,基准:Int)->Bool{ 返回编号Bool,基准:Int)->Bool{ 对于列表中的项目{ 如果条件(项目、基准){ 返回真值 } } 返回错误 } func lessthan基准(编号:Int,基准:Int)->Bool{ 返回编号

swift的函数,取其参数的另一个函数 func hasAnyMatches(列表:Int[],条件:Int->Bool)->Bool{ 对于列表中的项目{ 如果条件(项目){ 返回真值 } } 返回错误 } func lessThanTen(数字:Int)->Bool{ 返回编号Bool{ 返回编号Bool{ 返回编号Bool)->Bool{ 对于列表中的项目{ 如果条件(项目、基准){ 返回真值 } } 返回错误 } func-lessthanbanchmark(数字:Int,基准:Int)->Bool{ 返回编号Bool,基准:Int)->Bool{ 对于列表中的项目{ 如果条件(项目、基准){ 返回真值 } } 返回错误 } func lessthan基准(编号:Int,基准:Int)->Bool{ 返回编号,swift,Swift,这是Swift编程语言的示例 但是在这个例子中,我想要改变 func hasAnyMatches(list: Int[], condition: Int -> Bool) -> Bool { for item in list { if condition(item) { return true } } return false } func lessThanTen(number: Int) ->

这是Swift编程语言的示例

但是在这个例子中,我想要改变

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(数字:Int)->Bool{
返回编号<10
}

func-lessthanbanchmark(数字:Int,基准:Int)->Bool{
返回编号<10
}

所以我也把这个例子改为

func lessThanBenchmark(number: Int, benchMark: Int) -> Bool {
    return number < 10
}
func hasAnyMatches(列表:Int[],条件:(Int,基准:Int)->Bool)->Bool{
对于列表中的项目{
如果条件(项目、基准){
返回真值
}
}
返回错误
}
func-lessthanbanchmark(数字:Int,基准:Int)->Bool{
返回编号<基准
}
变量数=[20,19,7,12]
hasAnyMatches(数字,小于基准)
然而,我犯了一个错误

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)
:155:28:错误:使用未解析的标识符“基准”
如果条件(项目、基准){
最后,我不得不以这种风格写作

<REPL>:155:28: error: use of unresolved identifier 'benchmark'
        if condition(item, benchmark) {
func hasAnyMatches(列表:Int[],条件:(Int,Int)->Bool,基准:Int)->Bool{
对于列表中的项目{
如果条件(项目、基准){
返回真值
}
}
返回错误
}
func lessthan基准(编号:Int,基准:Int)->Bool{
返回编号<基准标记
}
变量数=[20,19,7,12]
hasAnyMatches(数字,小于基准,10)

如何将基准传递给条件,就像传递它自己的参数一样?

基准是函数的一个参数

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)
这行代码意味着condition是一个返回Bool值的函数,可以接受两个参数:Int作为第一个参数,benchmark:Int作为第二个参数

您可以在条件内部调用基准

smth是这样的:

condition: (Int, benchmark: Int) -> Bool
15是您要使用的值

condition: (Int, benchmark: Int) -> Bool
func hasAnyMatches(list: Int[], condition: (Int, benchmark: Int) -> Bool) -> Bool {
    for item in list {
        if condition(item, benchmark: 15) {
            return true
        }
    }
    return false
}