【发布时间】:2019-01-23 20:03:12
【问题描述】:
我一直试图让这个函数返回一个 Bool 值,但我不明白为什么我会收到错误“在预期返回 'Bool' 的函数中缺少返回。我一直在网上四处寻找并尝试了不同的方法,但我似乎找不到解决方案。任何帮助将不胜感激!
func trueSquare(a:[Int], b:[Int]) -> Bool {
for i in b[0]...b.endIndex {
if b[i] == a[i]*a[i] {
return true
}
else {
return false
}
}
}
编辑:我已将循环更改为 for i in 0...(b.count - 1),但即使我使用 a 和 b 都具有相同数量的元素调用该函数,我仍然遇到相同的错误。
【问题讨论】:
-
您会收到该错误,因为如果 b 数组为空并且您永远无法运行 for 循环会发生什么?此外,您尝试检查是否 b[i] == a[i]*a[i] 但如果 a 的元素少于 b,这将崩溃。
-
如果
b.endIndex小于b[0]怎么办? -
return zip(a, b).contains(where: { $0 * $0 == $1 })之类的东西可能是获得结果的更简单方法。 -
除此之外,在任何情况下,循环都不会超过第一次迭代。
-
@DanHilton 如果你想迭代整个循环,你不能在循环中使用
return。
标签: swift function compiler-errors