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