在Swift 3中使用选项的二元运算符

时间:2016-09-28 14:38:51

标签: swift swift3

我在这个风格的项目中有很多代码:

let hasQuestionsRemaining = user.numberOfCredits > 0.0

其中numberOfCreditsDouble?。所以我收到错误:Binary operator '>' cannot be applied to operands of type 'Double?' and 'Double'

所以现在我用:

var hasQuestionsRemaining = false
if let numberOfCredits = user.numberOfCredits, numberOfCredits > 0.0 {
   hasQuestionsRemaining = true
}

有更有效的方法吗?

1 个答案:

答案 0 :(得分:0)

在Swift 2.2中,您曾经能够直接比较Optional和非Optional类型,但在Swift 3.0中已删除该行为。您可以在proposal SE-0121.

中详细了解相关信息

Swift 3.0让开发人员以他们的应用程序最欣赏的方式处理他们的选项。在你的情况下,这似乎是要走的路:

let hasQuestionsRemaining = user.numberOfCredits ?? 0.0 > 0.0

为了与nil进行比较,它会将0.0值视为0.0