swift - 快速输入困难

标签 swift struct enums tuples

我正在尝试制作一种可以采用 3 种状态的“难度”类型:简单、中等或困难。然后将自动设置“最小”和“最大”值,如“myDifficultyInstance.min”之类的。

我试过了但是没有用,我收到错误:

enum Difficulty {
   case easy(min: 50, max: 200)
   case medium(min: 200, max: 500)
   case hard(min: 500, max: 1000)
}

然后我尝试了一个结构,但它变得太奇怪和丑陋了。

是否有一个简单的解决方案来做到这一点?

最佳答案

Default arguments are not allowed in enum cases

当您定义enum 的情况时,您不能定义默认值。想象一下,您只是在创建“模式”。

但是您可以做的是,您可以通过创建静态常量来创建默认情况

enum Difficulty {
    case easy(min: Int, max: Int)
    case medium(min: Int, max: Int)
    case hard(min: Int, max: Int)

    static let defaultEasy = easy(min: 50, max: 200)
    static let defaultMedium = medium(min: 200, max: 500)
    static let defaultHard = hard(min: 500, max: 1000)
}

然后你就可以这样使用了

Difficulty.defaultEasy
Difficulty.defaultMedium
Difficulty.defaultHard

此外,我认为对于您需要获取 minmax 值的情况,如果您使用自定义数据模型会更好

struct Difficulty {

    var min: Int
    var max: Int

    static let easy = Difficulty(min: 50, max: 200)
    static let medium = Difficulty(min: 200, max: 500)
    static let hard = Difficulty(min: 500, max: 1000) 
}

关于swift - 快速输入困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53760276/

相关文章:

java - 在匿名类中引用公共(public)枚举结果

swift - 链接 Realm 数据而不是复制

c - 动态调整大小的结构体 - 艰难地学习 C

Go:安全地将整数转换为 Protocol Buffer 枚举值的最佳实践

c - 有没有更好的方法来改变结构中的每个变量,C

c# - 如何将结构从 C++ 迁移到 C#

Java:如何将 String ArrayList 分配给 List<Enum>

ios - 如何在 Swift 中将新单元格插入到 UITableView 中

ios - Swift/如何使用 popViewController 调用委托(delegate)

ios - 以编程方式快速创建带有约束的 UIbutton