【发布时间】: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