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的函数,取其参数的另一个函数 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) ->
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
}