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

swift: about ternary operator Question. Why my code is error code??? Please tell me why I'm wrong

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 中,ternary condition operator 是一个 表达式 ,其形式为

<condition> ? <expression if true> : <expression if false>

Expressions are part of larger statements,三元组具体是一个计算结果为 ? 之后的 expression 或 [=14= 之后的一个] 取决于条件的真实性。

然而,

continue不是表达式而是statement on its own,这意味着它不能在三元的任何一边。

换一种方式思考:表达式求值为某个值(例如,可以放在赋值的 right-hand-side 上,如 x = <some expression>),而语句则不会(例如,它不写 x = continue).

没有意义

您需要以常规 if 语句的形式表达它,然后:

if arr[a] + arr[b] + arr[c] <= input[1] {
    result = arr[a] + arr[b] +arr[c]
} else {
    continue
}

请注意,上面的代码可能在语法上是正确的(因为它会编译),但它不太可能是你的意思:循环会自动continue 在执行结束时,即使 arr[a] + arr[b] + arr[c] <= input[1] 默认情况下 ,这意味着您的 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
            }
        }
    }
}