首页 > 解决方案 > Swift:在两个可选值之间切换

问题描述

我正在尝试实现两个选项值之间的切换:

import UIKit

var numOne: Int?
var numTwo: Int?

func doSomething() {
    switch (numOne, numTwo) {
    case (!nil, nil):
        print("something")
    case (_ == _):
        print("equal")
    default:
        break
    }
}

doSomething()

但我收到了这个错误:

在第一种情况下,我收到此错误:

'nil' is not compatible with expected argument type 'Bool'

在第二种情况下,我收到了另一个错误:

Expression pattern of type 'Bool' cannot match values of type '(Int?, Int?)'

我对你们的问题是,我怎样才能设法生成这与可选值之间的案例?

我会非常感谢你的帮助

标签: iosswiftiphonexcode11.4swift5.2

解决方案


这里没有错;语法不正确。

对于第一种情况,您的意思是:

case (.some, .none):

没有这样的事情!nil。可选项不是布尔值。你也可以写(.some, nil)因为nil是 的别名.none,但这让人感到困惑。

对于第二种情况,您的意思是:

case _ where numOne == numTwo:

这里的重点是您的意思_是条件为真( )的所有情况( where ...)。


func doSomething() {
    switch (numOne, numTwo) {
    case (.some, .none):
        print("something")
    case _ where numOne == numTwo:
        print("equal")
    default:
        break
    }
}

推荐阅读