首先,我为我的英语道歉! 请帮我检测一下我的错误。
let arrayInt = [0, 1, 2, 3, 4, 5, 7, 8, 9]
func myF(array: [Int], cl:(n1: Int, n2: Int) -> Bool) -> Int {
var number : Int
for value in array {
if cl(n1: number, n2: value) {
number = value
}
}
return number
}
myF(arrayInt, { cl: (n1: Int, n2: Int) -> Bool in
return n1 < n2
})
该函数接受一个 Int 数组,闭包返回 Int。闭包应该接受两个 Int 数字并返回 Bool yes 或 no。有必要遍历数组并使用闭包将数组元素与变量进行比较。如果闭包返回是,则将数组的值写入变量。在函数结束时返回变量。我们需要找到数组中的最大值和最小值。
我有 3 个问题:
- 一行中的连续语句必须用';'分隔
- 预期的表达
- 闭包参数列表的上下文类型需要 2 个参数,不能被隐式忽略
请不要建议我使用方法“sort()”。我正在学习“闭包”。
最佳答案
首先你需要初始化你的number
变量:var number : Int
-> var number = 0
其次,带闭包的函数调用不正确。有几种方法可以调用闭包:
let y = myF(arrayInt, cl: { (n1: Int, n2: Int) -> Bool in
return n1 < n2
})
或
let x = myF(arrayInt) { (n1, n2) -> Bool in
return n1 < n2
}
甚至
let z = myF(arrayInt) { n1, n2 in
return n1 < n2
}
和
let w = myF(arrayInt) { $0 < $1 }
完整代码示例:
let arrayInt = [1, 2, 3, 0, 4]
func myF(array: [Int], cl: (n1: Int, n2: Int) -> Bool) -> Int {
var number = 0
for i in array {
if cl(n1: number, n2: i) {
number = i
}
}
return number
}
let x = myF(arrayInt) { (n1, n2) -> Bool in
return n1 < n2
}
关于Swift 2.1 关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34806813/