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 }
时间: 2024-12-29 23:42:27

Swift面向对象基础(上)——Swift中的枚举的相关文章

Swift面向对象基础(上)——Swift中的类和结构体(下)

学习来自<极客学院> 1 import Foundation 2 3 class User { 4 var name:String 5 var age:Int 6 init(name:String,age:Int){ 7 self.age = age 8 self.name = name 9 } 10 } 11 var u1 = User(name:"何杨",age:23) 12 var u2 = User(name:"何杨",age:23) 13 pr

Swift面向对象基础(上)——Swift中的类和结构体(上)

学习来自<极客学院> 1 import Foundation 2 3 //1.定义类和结构体 4 /* 5 [修饰符]calss 类名{ 6 零到多个构造器 7 零到多个属性 8 零到多个方法 9 零到多个下标 10 } 11 修饰符可以是:private public internal final 12 */ 13 14 /*定义结构体 15 [修饰符]struct 结构体名{ 16 17 } 18 修饰符可以是:private public internal 19 */ 20 21 /*

Swift面向对象基础(中)——Swift中的方法

学习来自<极客学院> 1.定义方法需要在类型(枚举,结构体,类)里定义,不能独立定义,独立定义的是函数 2.方法要么属于该类型本身,要么是该类型的一个实例 3.不能独立执行方法,执行方法必须使用类型或实例作为调用者 注意:枚举.结构体中方法使用static修饰,类中用class修饰,都属于类型方法,否则的话属于实例方法 1 import Foundation 2 3 class SomeClass{ 4 func test(){ 5 println("====test 方法 ====

ios开发中的Swift面向对象

iOS在现代计算机语言中,面向对象是非常重要的特性,Swift语言也提供了面向对象的支持.而且在Swift语言中,不仅类具有面向对象特性,结构体和枚举也都具有面向对象特性. 1.Swift中的类和结构体 Swift中的类和结构体定义的语法也是非常相似的.我们可以使用class关键词定义类,下面我们定义一个Person类,分别包含年龄和姓名属性. import UIKit class JRPerson: NSObject {} 我们发现现在类的定义和之前OC定义有了很大的不同,对于之前的.m文件和

Swift 的类、结构体、枚举等的构造过程Initialization(上)

构造过程是为了使用某个类.结构体或枚举类型的实例而进行的准备过程.这个过程包含了为实例中的每个属性设置初始值和为其执行必要的准备和初始化任务. 构造过程是通过定义构造器(Initializers)来实现的,这些构造器可以看做是用来创建特定类型实例的特殊方法.与 Objective-C 中的构造器不同,Swift 的构造器无需返回值,它们的主要任务是保证新实例在第一次使用前完成正确的初始化. 类实例也可以通过定义析构器(deinitializer)在类实例释放之前执行特定的清除工作.想了解更多关于

Swift基础之OC文件调用Swift代码(在上次的基础上写的)

前两天刚写过Swift调用OC,今天在原来的基础上,实现OC调用Swift. 首先,创建一个OneSwiftFile.swift文件,创建一个继承于NSObject的类(这个地方你可以自己选择继承的父类) 然后在类中创建几个方法,方便在OC文件中使用 class OneSwiftFile:NSObject{    override init() {        NSLog("这是在init方法中...");    }        //创建一个方法    func someFunc(

Swift 面向对象解析(一)

面向对象总体概括: Swift 不仅能够面向过程编程,也能够面向对象编程(OOP).面向对象其实就是“以对象为核心”,把我们的客观世界想着是由一个个对象组成的,面向对象编程则为对象提供了属性和方法,属性就是为了描述对象的一些状态,方法则是告诉你对象该做什么.面向对象和核心就是“类”和“对象”!在我刚接触编程的时候,其实我也很容易把这东西混淆了,你要也是刚接触编程,能帮到你的,我觉得反而是时间.你要实在是有点难理解,就别去钻牛角尖,也许明天因为某个东西你就会恍然大悟.超喜欢那种感觉! 面向对象的三

数据结构(八) AOV网的关键路径(Swift面向对象版)

上篇博客我们介绍了AOV网的拓扑序列,请参考<数据结构(七) AOV网的拓扑排序(Swift面向对象版)>.拓扑序列中包括项目的每个结点,沿着拓扑序列将项目进行下去是肯定可以将项目完成的,但是工期不是最优的.因为拓扑序列是一个串行序列,如果按照该序列执行项目,那么就是串行执行的.我们知道在一个项目中的一些子工程是可以并行来完成的,这也就类似我们的多线程.今天我们要解决的问题就是找出一个关键路径,是工期最优并保证工程的完成.什么是关键路径,我们在下方会进行详细介绍. 一.关键路径概述 在聊关键路

Swift面向对象的类型

1.类 2.结构体(struct) 3.枚举(enum) 在swift语言中通过类和结构体实现面向对象,在Swift语言中,枚举也具有面向对象的特性 示例和对象 在面向对象中,将类创建对象的过程称为实例化,因此将对象称为实例化,但是在swift中,枚举和结构体不能称为对象,因为结构体和枚举并不是彻底的面向对象类型,而是只包含了一些面向对象的特定,例如,在Swift中继承只发生在类上,结构体和枚举不能继承