如何使用 swift 中的 if 语句检查枚举?

How can I check a enum using an if statement in swift?

今天我正在编写一个应用程序,需要将一些 Double 更正为一些重要的 figures/digits(sig fig)。用户可以设置编号。要转换为的信号图。我将这条信息存储在NSUserDefaults.

我创建了一个枚举来表示这些设置,因为我想让我的代码更具可读性,而不仅仅是普通的旧整数。这是枚举:

enum SigFigOptions{
    case No
    case Yes(Int)
}

如果是.No,数字就是准确的。如果是.Yes,数字将被更正。并且sig fig的数量存储在关联值中。

然后我在枚举中创建了一个名为 correctTo 的方法。

func correctTo (i: Double) -> Double {
    if self == .No {

    }
}

写这个的时候看到语法错误,说是有歧义。所以我改成了:

if self == SigFigOptions.No

但是后来又说==不能用在两种SigFigOptions类型上。

真不懂!我知道我可以使用 switch 来做到这一点。但是我认为在很多情况下应该使用switch。在这种情况下,我认为最好使用 if 语句来增强可读性。但我就是不能比较它们!

你能告诉我如何使用 if 语句比较枚举吗?

哦,顺便说一句,如果你知道将数字更正为某个 sig fig 的算法。请给我看看。

您可以使用模式绑定:if case .No = self { ... }