Swift 三元语法错误

Posted

技术标签:

【中文标题】Swift 三元语法错误【英文标题】:Swift ternary syntax error 【发布时间】:2015-05-09 06:36:29 【问题描述】:

我以前一直使用 Objective-C 进行编程,而且我是 Swift 的新手。这个错误 Xcode 让我很困惑。

func renderBufferAreaBAUp(yOffset: CGFloat, amount: CGFloat, ifLeft: Bool)
     
        var topViewIndexForIndexAdjust = ifLeft?leftTopIndex:rightTopIndex

在这一行我打算使用三元。 leftTopIndex 和 rightTopIndex 都是 Int 类型。然而,Xcode 给了我这一行的那些,

一行中的连续语句必须用';'分隔 预期表达

谁能告诉我这些是什么意思?谢谢。

【问题讨论】:

【参考方案1】:

Swift 错误消息通常含糊不清且没有帮助。您真正的问题是 Swift 需要在 ?: 周围留出一些空间。

var topViewIndexForIndexAdjust = ifLeft ? leftTopIndex : rightTopIndex

【讨论】:

【参考方案2】:

您必须使用空格来分隔操作数和运算符:

var topViewIndexForIndexAdjust = ifLeft ? leftTopIndex : rightTopIndex
                                       ^ ^            ^ ^

Swift 对此非常严格——即使是这行明显正确的代码:

let val =12

产生编译错误。

【讨论】:

【参考方案3】:

为三元运算符的神秘 Swift 错误消息而苦苦挣扎

错误 1

incrementValue = incrementValue == 0?1:incrementValue //errors saying add ";", consecutive statements must be separated by ";"

错误 2

incrementValue = incrementValue = 0 ? 1 : incrementValue //error - Assigning a variable to itself

正确的是 - WITH SPACES 和 WITH ==

incrementValue = incrementValue == 0 ? 1 : incrementValue //worked

【讨论】:

【参考方案4】:
    return episodes == nil ? .movie : .tvShow

【讨论】:

感谢您抽出宝贵时间回答!最好能解释一下你的答案,而不仅仅是代码。 这不是答案。我标记了它,但 anusha.V 做得不好并且没有删除它。因此应标记并删除 anusha.V。

以上是关于Swift 三元语法错误的主要内容,如果未能解决你的问题,请参考以下文章

Swift 语法错误和 init()?

将代码更新为最新的 Swift 4 语法会导致“线程 1:致命错误:索引超出范围”错误

如何使用 Swift #selector 语法解决“歧义使用”编译错误?

Swift cocoapod install framework (Alamofire) 在 xcode 中出现语法错误

将 FBO 保存到相机胶卷后清理后崩溃错误? Swift 2.0 选择器语法

NSNotfication.addObserver - 更新到当前的 Swift 语法?