swift:关于三元运算符为什么我的代码是错误代码??请告诉我为什么我错了。
var arr = [0,1,2,3,4,5,6,7,8]
var result = 0;
for a in 0..<arr.count{
for b in 1..<arr.count - 1{
for c in 2..<arr.count - 2 {
arr[a] + arr[b] + arr[c] <= input[1] ? result = arr[a] + arr[b] +arr[c] : continue
}
}
}
[这是我的错误][1]: https://i.stack.imgur.com/UdiUB.png
在Swift中,三元条件操作符是表达式,其形式为
<condition> ? <expression if true> : <expression if false>
表达式是较大语句的一部分,具体来说,三进制表达式是在?
之后求值的表达式,或在:
之后求值的表达式,取决于条件的真值。
然而,continue
不是表达式,而是单独的语句,这意味着它不能位于三元数的任何一端。
从另一个角度考虑:表达式的计算结果是某个值(例如,可以放在赋值的右侧,如x = <some expression>
),而语句则不能(例如,写x = continue
没有意义)。
您需要用常规if
-语句的形式来表示它:
if arr[a] + arr[b] + arr[c] <= input[1] {
result = arr[a] + arr[b] +arr[c]
} else {
continue
}
请注意,上面的代码可能在语法上是正确的(因为它可以编译),但它不太可能是您的意思:即使默认的是arr[a] + arr[b] + arr[c] <= input[1]
,循环也会在执行结束时自动执行continue
,这意味着您的result
可能会在稍后的循环中被覆盖。你的意思好像是
outer_loop: for a in 0 ..< arr.count {
for b in 1 ..< arr.count - 1 {
for c in 2 ..< arr.count - 2 {
if arr[a] + arr[b] + arr[c] <= input[1] {
result = arr[a] + arr[b] + arr[c]
// `break` would only exit the `c` loop, but with this label
// we can exit all loops at once.
break outer_loop
}
}
}
}