【问题标题】:How can I check a enum using an if statement in swift? [duplicate]如何在 swift 中使用 if 语句检查枚举? [复制]
【发布时间】:2016-04-22 13:13:38
【问题描述】:

今天我正在编写一个应用程序,需要将一些 Doubles 更正为一些有效数字/数字(sig fig)。用户可以设置编号。要转换为的 sig 无花果。我将这条信息存储在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 的算法。请给我看看。

【问题讨论】:

  • 我猜你可以实现Equatable,但这对可读性没有多大帮助。此外,如果选项为Yes,您可能会使用匹配来提取值,因此在同一个开关中使用 if 和 switch 而不是两个 case 可能不会给您带来太多好处。

标签: swift if-statement enums operators


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    相关资源
    最近更新 更多