我在这个风格的项目中有很多代码:
let hasQuestionsRemaining = user.numberOfCredits > 0.0
其中numberOfCredits
是Double?
。所以我收到错误: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
}
有更有效的方法吗?
答案 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
。