ios - Swift:使用枚举来表示扑克牌的等级

标签 ios swift enums switch-statement case

我正在尝试根据以下规范创建一个枚举来表示扑克牌的排名:

Rank 枚举应该只有三种情况:.ace.numeric.face.ace 代表 Ace,.numeric 代表数字牌,.face 代表人头牌 JQK。

我们还希望有一个变量 order 来返回要打印的整数的排名(例如,“Q”将返回 12。

枚举产生以下结果:

var a = Rank.ace
var b = Rank.numeric(pipsCount: 7)
var c = Rank.face("Q")
print("\(a.order)") \\prints: 1
print("\(b.order)") \\prints: 7
print("\(c.order)") \\prints: 12

到目前为止,我的问题是让它打印“Q”的 12。

我用过:

    case ace
    case numeric(pipsCount: Int)
    case face(String)

制作案例

然后切换到制作其他东西

          switch self {
          case .ace:
               return 1
          case .numeric(let pipsCount):
            return pipsCount
          case .face
               return 0
        }

但我只是不确定如何设置 care .face 因为我不确定如何将 JQK 的输入分别转换为 11、12 和 13?

最佳答案

由于您没有明确命名关联值,因此您可以使用您喜欢的任何名称来提取它。在此示例中,我选择了 id:

enum Rank {
    case ace
    case numeric(pipsCount: Int)
    case face(String)

    var order: Int {
        switch self {
        case .ace:
            return 1
        case .numeric(let pipsCount):
            return pipsCount
        case .face(let id):
            switch id {
            case "J":
                return 11
            case "Q":
                return 12
            case "K":
                return 13
            default:
                return 0
            }
        }
    }
}

关于ios - Swift:使用枚举来表示扑克牌的等级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61564047/

相关文章:

ios - 如何将应用程序链接到 App Store?

ios - 如何在 iOS UItest 中选择本地化的日期选择器项目

python - 当在枚举值中使用类函数时,“函数”对象没有属性 'value'

ios - 基于屏幕高度的约束常数

ios - 区分选项卡与点击 UITextField 条目?

ios - 使用 Realm 存储数据,添加对象清除列表中的对象

swift - CIFilter 后的图像旋转

ios - 如何使用 Alamofire 发送 SwftyJSON?

java - Protocol Buffer 和枚举组合?

Java:扩展类中的枚举