gpt4 book ai didi

以函数作为参数的 Swift 函数

转载 作者:搜寻专家 更新时间:2023-10-31 19:35:22 26 4
gpt4 key购买 nike

我有一个问题,为什么我会收到“函数中缺少返回值”的编译错误。我正在按照“The Swift Programming Language”一书中的示例进行操作,其中有一节是关于将一​​个函数作为另一个函数的参数传递的。

这是本书的示例,可以很好地编译:

func hasAnyMatches(list: [Int], condition: Int -> Bool) -> Bool {
for item in list {
if condition (item) {// anonymous function call
return true
}
}
return false
}

func lessThanTen(number: Int) -> Bool {
return number < 10
}

我明白这一点,但我想我可以做一个微妙的改变,因为我觉得 if condition(item){ } 是多余的。这是我的改动:

func hasAnyMatches(list: [Int], condition: Int -> Bool) -> Bool {
for item in list {
return condition(item)
}//error here with "Missing return in a function expected to return bool"
}

我返回一个 bool 值,因为我返回了函数的结果。在 for-in 循环期间我不会返回 bool 值。

我不明白为什么这不能编译,有人可以解释为什么吗?

最佳答案

首先,您的更改与旧代码不同。您的版本返回列表中第一个元素的测试结果,而不是任何元素是否通过测试。

错误的原因是你的代码根本不能保证执行return。如果列表为空,则您将跳转到函数的末尾而不调用 return。编译器会告诉您这一点。

关于以函数作为参数的 Swift 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28093630/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com