美文网首页
Swift中enum的使用1

Swift中enum的使用1

作者: 盖小聂 | 来源:发表于2019-06-28 15:20 被阅读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

  • 在struct和enum这两个值类型中,我们可以使用static在类型范围内声明并使用存储属性,计算属性和方法

  • 在protocol里可以使用static定义一个类型域上的方法或者计算属性

  • class关键字专门用在class类型的上下文中,可以用来修饰类方法和计算属性,但是不能用来修饰存储属性,存储属性应该使用static来声明

  • 总而言之,在任何时候使用static应该都是没有问题的

接口和类方法中的Self

  • 首字母大写的Self是一个类型,用在protocol中表示实现了这个protocol的类型本身,也包括这个类型的子类

  • 在当前类类的声明前添加final关键字,告诉编译器我们不再会有子类继承这个类型。

  • 另一个可以使用Self的地方是在类方法中,使用起来也与此十分相似,核心就在于保证子类也能返回恰当的类型。

相关文章

  • Swift中enum的使用1

    static和class的使用Tips 在struct和enum这两个值类型中,我们可以使用static在类型范围...

  • Swift探索(五): Enum & Optional

    一:枚举(Enum) 1. 枚举的基本用法 Swift 中通过 enum 关键字来声明一个枚举 Swift 中的枚...

  • Swfit语法tips

    关于函数和闭包的介绍 在Swift中定义的Enum,OC中使用 Swift中定义如下,注意@objc 在OC中使用...

  • swift 与 OC交互

    1、swift使用OC里定义的NS_Options组合 参考:iOS中的OC中的枚举(NS_ENUM和NS_OPT...

  • Swift枚举

    Swift中,枚举的创建方式如下; /*写法1*/ enum LTSeasonOne{ case FIRST ...

  • 枚举

    1.swift中的枚举:如果你想要在swift中定义一个枚举,可以这样做:enum ItemButtonType:...

  • Swift5探究:值类型与引用类型

    值类型 在 Swift 中,struct、enum、 tuple 都是值类型。而平时使用的 Int, Double...

  • Swift -- 5.Enum&Optional&运算符

    一.Enum 1.Enum基本信息 Swift中通过enum关键字来声明一个枚举 在C或者OC中默认受整数支持,也...

  • Swift中Enum的使用姿势

    Swift的Enum类型可以存储值 enum iOSDeviceSystemType {case iPhone(S...

  • Swift中enum的使用3

    补充说明: Swift中我们在一个集合中只能放同一个类型的元素。 如果我们要把不同类型放到同一个容器类型中的话,一...

网友评论

      本文标题:Swift中enum的使用1

      本文链接:https://www.haomeiwen.com/subject/tcoscctx.html