Swift中enum的使用1

2019-06-28  本文已影响0人  盖小聂
enum Suit: String {
    case Spades = "黑桃"
    case Hearts = "红桃"
    case Clubs = "草花"
    case Diamonds = "方片"
}

enum Rank: Int, CustomStringConvertible {
    case Ace = 1
    case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
    case Jack, Queen, King
    var description: String {
        switch self {
        case .Ace: return "A"
        case .Jack: return "J"
        case .Queen: return "Q"
        case .King: return "K"
        default:
            return String(self.rawValue)
        }
    }
}

protocol EnumeratableEnumType {
    //在protocol里定义一个类型域上的方法或者计算属性时,使用static进行定义;
    //Self表示实现了EnumeratableEnumType协议的类型以及子类
    static var allValues: [Self] { get }
}


extension Suit: EnumeratableEnumType {
    static var allValues: [Suit] {
        return [.Spades, .Hearts, .Clubs, .Diamonds]
    }
}

extension Rank: EnumeratableEnumType {
    static var allValues: [Rank] {
        return [.Ace, .Two, .Three, .Four, .Five, .Six, .Seven, .Eight, .Nine, .Ten, .Jack, .Queen,.King];
    }
}

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        //MARK: - Enum Test
        for suit in Suit.allValues {
            for rank in Rank.allValues {
                print("\(suit.rawValue)\(rank)")
            }
        }
   }
}

static和class的使用Tips

接口和类方法中的Self

上一篇 下一篇

猜你喜欢

热点阅读