【发布时间】:2014-06-04 01:55:42
【问题描述】:
我得到一个编译错误说
Bound value in a conditional binding must be an Optional type
下面是代码截图
【问题讨论】:
-
请在此处发布您的代码,而不是屏幕截图
标签: swift
我得到一个编译错误说
Bound value in a conditional binding must be an Optional type
下面是代码截图
【问题讨论】:
标签: swift
您可以像这样将 array[index] 的值转换为 Optional:
if let value = Int?(array[index]){
result += value
}
如果你的数组包含 Ints。你也可以使用 AnyObject?,但你会收到来自 xcode 的警告。
【讨论】:
array应该声明为Optional type,以Int?[]为例,
let array:Int?[] = [nil, 2, 3]
let index = 0
let count = array.count
for index in 0..count {
if let value = array[index] {
println(value)
} else {
println("no value")
}
}
【讨论】:
如果 array[index] 的值的类型是可选的,你可以简单地这样做:
if let value = array[index]{
result += value
}
【讨论】:
在这种情况下,编译器会抱怨,因为数组 不是 可选(可为零)类型的集合。如果确实不需要,那么您实际上并不需要 if,因为数组中的所有内容都保证是相同的类型,并且 if 语句不会保护您免受无论如何 -bounds 错误。所以就去吧:
while ++index < length {
result += array[index]
}
或者更好:
for value in array {
result += value
}
甚至更好:
result = array.reduce(0) { $0 + $1 }
【讨论】: