开发者社区> goodboy_heyang> 正文

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 }
复制代码

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python基础(面向对象编程)
其实比如str()这个内置函数,都是在内部调用__str__方法。 之所以提供str()这种方法大概是更简洁吧,有兴趣的可以去看一下源码。
2799 0
未能初始化 PassportManager 对象。请确保在服务器上正确安装了 Microsoft Passport。
未能初始化 PassportManager 对象。请确保在服务器上正确安装了 Microsoft Passport。 已经不记得 Microsoft Passport 怎么使用了,也没有查到 Microsoft Passport 的安装方法。
889 0
Swift基础--使用TableViewController自定义列表
<p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"> 首先建立一个swift项目,把storyboard的内容删掉,添加一个Navigation Controller,然后
962 0
C#基础知识-对象初始化顺序
本文章转载:http://blog.csdn.net/forever_wind/article/details/7442503 不错的文章:http://www.cnblogs.com/McJeremy/archive/2009/04/23/1442163.
545 0
swift基础知识二
//1.if语句以及强制解析 //可以使用if语句和nil比较来判断一个可选值是否包含值,可以使用“==”,'!= ' 来执行比较 //如果可选类型有值,它将不等于nil var num:Int? = 3 if num != nil { print("值不为空") } //感叹号 ! //当你判断一个可选类型确实包含值之后,你可以在可选的名字后面加上感叹号(!)来获取值,这个感叹号表示“我知道这个可选类型有值,请使用它”。
626 0
Java面向对象基础--类的设计及分析问题的方法---用户登录例子
<h1>1、用户登录的示例</h1> <div>首先要做的就是先把功能实现:</div> <div> <pre name="code" class="java">public class LoginDemo01{ public static void main(String args[]){ if(args.length!=2){ // 应该判断输入的参数个数是否是2
1186 0
《Android游戏开发详解》一2.8 对象的基础知识
我们已经应用了第1章中介绍过的概念来编写和运行一些非常简单的Java程序。接下来,我们将把注意力转向对象,它使得我们能够编写更加复杂和强大的程序。
1256 0
243
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载