• 20.嵌套类型


      枚举常被用于为特定类或结构体实现某些功能。类似的,枚举可以方便的定义工具类或结构体,从而为某个复杂的类型所使用。为了实现这种功能,Swift 允许你定义嵌套类型,可以在支持的类型中定义嵌套的枚举、类和结构体。

       要在一个类型中嵌套另一个类型,将嵌套类型的定义写在其外部类型的{}内,而且可以根据需要定义多级嵌套。

    1.嵌套类型实践

    struct BlackjackCard
    {
        //嵌套的Suit
        enum Suit : Character
        {
            case Spades = "";
            case Hearts = "";
            case Diamonds = "";
            case Clubs = "";
        }
        
        //嵌套的Rank
        enum Rank : Int
        {
            case Two = 2, Three, Four, Five, Six, Seven, Eight, Nine, Ten;
            case Jack, Queen, King, Ace;
            
            //嵌套结构体Values
            struct Values
            {
                let first: Int;
                let second: Int?;
            }
            
            //属性
            var values: Values
            {
                switch self
                {
                case .Ace:
                    return Values(first: 1, second: 11);
                case .Jack, .Queen, .King:
                    return Values(first: 10, second: nil);
                default:
                    return Values(first: self.rawValue, second: nil);
                }
            }
        }
        
        let suit: Suit;
        let rank: Rank;
        var description: String
        {
            var output = "suit is (suit.rawValue),";
            output += " value is (rank.values.first)";
            if let second = rank.values.second
            {
                output += " or (second)";
            }
            return output;
        }
    }
    
    let theAceOfSpades = BlackjackCard(suit: .Spades, rank: .Ace);
    print("theAceOfSpades: (theAceOfSpades.description)");  //"theAceOfSpades: suit is ♠, value is 1 or 11
    "
    
    //外部引用嵌套类型时,在嵌套类型的类型名前加上其外部类型的类型名作为前缀
    let heartsSymbol = BlackjackCard.Suit.Hearts.rawValue;

     

  • 相关阅读:
    wpf写的httpget请求
    c#的反射机制
    C#中所有的类都继承自哪个类
    使用c#创建windows的桌面的自启服务
    工厂模式的三种实现,就这么简单!
    Github上的沙雕项目,玩100遍都不够
    代理模式的种类、原理及各种实例详解
    面试官问:HashMap在并发情况下为什么造成死循环?一脸懵
    Oracle中 COUNT(count(*))语法
    jquery如何获取当前时间
  • 原文地址:https://www.cnblogs.com/LeeGof/p/5682590.html
Copyright © 2020-2023  润新知