zoukankan      html  css  js  c++  java
  • Swift面向对象基础(上)——Swift中的枚举

    Swift中枚举

    学习笔记来自《极客学院》

     1 import Foundation
     2 
     3 /**********1*Swift定义枚举的语法格式*************/
     4 /*
     5 enum 枚举名 {
     6     使用case关键字列出所有枚举值
     7     枚举的其他成员
     8 }
     9 */
    10 //定义枚举
    11 enum Season{
    12     case Spring
    13     case Summer
    14     case Fall
    15     case Winter
    16 }
    17 //使用一个case列举所有的值
    18 enum Season2{
    19     case Spring,Summer,Fall,Winter
    20 }
    21 //使用枚举声明变量
    22 var weather : Season//这里就是声明一个Season 类型的变量weather
    23 weather = .Summer//或者是:weather = Season.Summer
    24 println("1:(weather)")
    25 
    26 var enum_1 = Season.Winter//直接用类型推断也可以
    27 switch(enum_1){
    28 case .Spring:
    29     println(Season.Spring)
    30 case .Summer:
    31     println(Season.Summer)
    32 default:
    33     println("在家里")
    34 }//switch中的case没有覆盖枚举的所有值,必须添加default语句,也就是说如果列出了枚举所有的值,就可以删掉default语句了
    35 
    36 
    37 /**********2*原始值*************/
    38 /*
    39 enum 枚举值 : 原始值类型{
    40     case 枚举值 = 原始值
    41 }
    42 */
    43 enum Weekday : Int{
    44     case Mon,Tur,Wen = 4,Thur,Fri,Sat,Sun
    45 }//因为这里都是整形所以会自动推断他们分别是1~7
    46 println(Weekday.Wen)//不知道结果为甚是这样的:(Enum Value)
    47 
    48 //所以获取枚举的 原始值
    49 println(Weekday.Mon.rawValue)
    50 println(Weekday.Tur.hashValue)
    51 
    52 enum Season3 : Character{
    53     case Spring = ""
    54     case Summer = ""
    55     case Fall = ""
    56     case Winter = ""
    57 }//但是上面类型的推断仅仅局限在整型的情况下,swift会自动推断
    58 
    59 //根据原始值来获取枚举值,调用的事构造器,这个构造器是可选类型:init?(rawValue:)
    60 var mySeason = Season3(rawValue: "")
    61 if mySeason != nil{
    62     switch(mySeason!){//需要间接解包
    63     case .Spring:
    64         println("春天不是读书天")
    65     case .Summer:
    66         println("夏天炎炎正好呢")
    67     case .Fall,.Winter:     //这里表示“或”
    68         println("秋多蚊蝇冬日冷")
    69     default:
    70         println("读书只好等明年")
    71     }
    72 }
    73 
    74 
    75 /**********3*关联值*************/
    76 //在每个枚举值后面添加括号扩起来的关联值,然后关联值个数是0~多个,然后定义类型值,当然也可以仅仅只有类型,不需要关联值名称
    77 enum Planet {
    78     case Earth(weight: Double,name: String)
    79     case Mars(density: Double,name:String,weight:Double)
    80     case Venus(Double,String)
    81     case Saturn
    82     case Neptune
    83 }//其实这后面括号扩起来的就是元祖
    84 //获取枚举值,系统还会自动提示,这个操作一下就能明白了
    85 var p1 = Planet.Earth(weight: 23, name: "hah")
    86 //接下来就是得到这些关联值,要得到这些关联值,就要声明额外的变量
    87 //但是下面直接用的是switch语句
    88 switch(p1){
    89 case Planet.Earth(var weight,var name):
    90     println("(name)~~~~~~~~~(weight)")
    91 case let Planet.Mars(density:d,name:n,weight:dou):
    92     println("(d)")
    93 default:
    94     break
    95 }
  • 相关阅读:
    .NET Interop 工具集
    关于正弦波的算法
    Windows Phone 系列 本地数据存储
    Xaml cannot create an instance of “X”
    Windows Phone 系列 使用 MVVM绑定时无法获取当前值
    Windows Phone 系列 应用程序图标无法显示
    Windows Phone 系列 WPConnect无法上网的问题
    Windows Phone 系列 使用 Windows Phone 保存铃声任务
    WP7.5提交应用
    Windows Phone 系列 动态删除ObservableCollection
  • 原文地址:https://www.cnblogs.com/goodboy-heyang/p/4649504.html
Copyright © 2011-2022 走看看