Swift 以函数为参数的函数
Swift function with a function as parameter
我有一个问题,为什么我会得到 "Missing return in a function" 的编译错误。我正在按照 "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"
}
我 return 是一个布尔值,因为我 return 函数的结果。在 for-in 循环中我不会 return 布尔值。
我不明白为什么这不能编译,有人可以解释为什么吗?
func hasAnyMatches(list: [Int], condition: Int -> Bool) -> Bool {
for item in list {
if condition(item) {
return true
}
}
return bool
}
首先,您的更改与旧代码不同。您的版本 returns 测试列表中第一个元素的结果,而不是任何元素是否通过测试。
错误的原因是您的代码根本无法保证执行 return
。如果列表为空,那么您将跳转到函数的末尾而不调用 return
。编译器告诉你的。
我有一个问题,为什么我会得到 "Missing return in a function" 的编译错误。我正在按照 "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"
}
我 return 是一个布尔值,因为我 return 函数的结果。在 for-in 循环中我不会 return 布尔值。
我不明白为什么这不能编译,有人可以解释为什么吗?
func hasAnyMatches(list: [Int], condition: Int -> Bool) -> Bool {
for item in list {
if condition(item) {
return true
}
}
return bool
}
首先,您的更改与旧代码不同。您的版本 returns 测试列表中第一个元素的结果,而不是任何元素是否通过测试。
错误的原因是您的代码根本无法保证执行 return
。如果列表为空,那么您将跳转到函数的末尾而不调用 return
。编译器告诉你的。