zoukankan      html  css  js  c++  java
  • 枚举与结构

    • 枚举:

    情况1:

     1 enum Rank: Int {
     2     case Ace = 1
     3     case Two, Three, Four
     4     case Queen, King
     5     func simpleDescription() -> String {
     6         switch self {
     7         case .Ace:
     8             return "ace"
     9         case .Queen:
    10             return "queen"
    11         case .King:
    12             return "king"
    13         default:
    14             return String(self.rawValue)
    15         }
    16     }
    17 }
    18 print(Rank.Ace.simpleDescription())//输出ace:实际值对方法的调用
    19 var str = Rank.Ace//实际值的调用
    20 //以上分别是两种调用,枚举就这点东西
    21 
    22 //以下为得到值之后的使用
    23 print(str)//而这里,却输出Ace(实际值)
    24 print(str.rawValue)//这里才输出1(原始值)
    25 print(Rank.Two.simpleDescription())//输出默认
    View Code

    情况2:

     1 enum Suit {
     2     case Spades, Hearts, Diamonds, Clubs
     3     func simpleDescription() -> String {
     4         switch self {
     5         case .Spades:
     6             return "spades"
     7         case .Hearts:
     8             return "hearts"
     9         case .Diamonds:
    10             return "diamonds"
    11         case .Clubs:
    12             return "clubs"
    13         }
    14     }
    15 }
    16 let heart = Suit.Hearts
    17 let heartsDescription = heart.simpleDescription()
    18 print(heartsDescription)
    19 print(heart)
    View Code

    此外,第二种情况下,对实际值的调用:若变量heart的类型已知,则后面枚举实际值可用缩写,即var heart:Suit = .Hearts。


    • 结构:

    结构与类极为相似,最大的区别在于结构体是传值,类是传引用。即向“对象”(临时对结构体也这样称呼)赋值时,“对象”存储的是值还是引用。

    如果结构体中有方法要修改结构体,比如修改某一个成员变量的值,则需要将该方法声明为mutating,即在方法最前面写上mutating。而类不需要,可直接修改。

  • 相关阅读:
    mysql 三星索引设置
    mysql 索引长度解释及不使用索引的一种特殊情况
    null作为方法的参数,并在方法里面赋值后的结果是什么?
    线程、调度线程池、异常
    系统服务化,需要考虑的问题
    05-Python之高级语法
    01-python基本语法元素
    04-Python之文件、异常和模块
    03-Python之类
    02-Python之函数
  • 原文地址:https://www.cnblogs.com/quanxi/p/5907407.html
Copyright © 2011-2022 走看看