斯威夫特:关于三元运算符的问题。为什么我的代码是错误代码???请告诉我为什么我错了



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
}
}
}
}

相关内容

最新更新