swift:入门知识之枚举和结构体

简介:

枚举:

swift中的枚举有些类似于类这个概念,它有自己的属性,也可以有自己的方法

枚举中的成员有原始值和实际值之分,原始值用来枚举成员的排序次序,默认从0开始

枚举出来的成员值就是实际值

可以通过toRaw和fromRaw函数转换原始值和枚举值

也可以使用字符处或浮点数作为枚举的原始值

 

枚举:

 

匹配枚举值和Switch语句(Matching Enumeration Values with a Switch Statement) 

具体举例如下:

//给扑克牌内容声明一个枚举(A、2、3、4、5、6、7、8、9、10、J、Q、K)

复制代码
enum Rank:Int{
   case Ace
   case Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten
   case Jack,Queen,King
    
    func simpleDescription()->String{
        switch self{
            case .Ace:return "ace"
            case .Jack:return "Jack"
            case .Queen:return "Queen"
            case .King:return "King"
            default:return String(self.toRaw())
        }
    }
}
复制代码

//创建枚举实例,获取枚举元素的原始值和实际值 

复制代码
let ace = Rank.Jack   //获取一个枚举元素
let originValue = ace.toRaw()            //该元素的原始值 10
let factvalue = ace.simpleDescription()  //该元素的实际值 Jack

//将一个原始值转换为实际值
if let origin = Rank.fromRaw(10){          // 10
    let fact = origin.simpleDescription()  // Jack
}
复制代码

 //给扑克牌的花色声明一个枚举

复制代码
enum Suit{
    case Spades,Hearts,Diamonds,Clubs
    func simpleDescription()->String{
        switch self{
        case .Spades : return "spades"
        case .Hearts : return "hearts"
        case .Diamonds:return "diamonds"
        case .Clubs  : return "clubs"
      }
   }
}
复制代码

 //创建枚举实例,获取枚举元素的值

let heart = Suit.Hearts   //获取一个枚举元素
let heartsDescription = heart.simpleDescription() //元素的实际值  hearts

 

 

结构体:

 swift中使用struct创建结构体。结构体支持多个与类相同的行为,包括方法和构造器。

 一大重要的区别是结构体(以及枚举)代码之间的传递总是用拷贝(值传递),而类则是传递引用(地址传递)。

 对于传值调用,是把实参户值传递给形参,此时形参是要被分配空间的,而对形参做的任何操作是不会改变实参的值的;

 对于传址调用,是指传递实参的地址,即形参和实参的指针指向同一块内存区域,任何一方对数据做修改,值都会改变。

 

类和结构体对比

 Swift 中类和结构体有很多共同点。共同处在于:

 定义属性用于储存值

 定义方法用于提供功能

 定义下标用于通过下标语法访问值

 定义初始化器用于生成初始化值

 通过扩展以增加默认实现的功能

 符合协议以对某类提供标准功能

 

 //结合上面的枚举的使用,现在声明一个扑克牌结构体,它有扑克牌内容和花色这两个枚举类型的成员变量

复制代码
struct Card {
    
    //成员属性
    var rank:Rank
    var suit:Suit
    
    //成员方法
    func simpleDescription()->String{
        return "The \(rank.simpleDescription()) of \(suit.simpleDescription())"
    }
}
复制代码

//创建结构体成员实例,并调用成员方法

复制代码
//传入两个枚举类型的引用创建一个结构体成员变量
let threeOfShapes = Card(rank: .Three, suit: .Spades)

//结构体成员变量调用成员方法
let threeOfShapesDescription = threeOfShapes.simpleDescription()   //“The 2 of shpades”
复制代码

 

 

总结:结构体和枚举是值类型

值类型被赋予给一个变量,常数或者本身被传递给一个函数的时候,实际上操作的是其的拷贝。

 在之前的章节中,我们已经大量使用了值类型。实际上,在 Swift 中,所有的基本类型:整数(Integer)、浮点数(floating-point)、布尔值(Booleans)、字符串(string)、数组(array)和字典(dictionaries),都是值类型,并且都是以结构体的形式在后台所实现。

 在 Swift 中,所有的结构体和枚举都是值类型。这意味着它们的实例,以及实例中所包含的任何值类型属性,在代码中传递的时候都会被复制。

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
 
 
本文转自当天真遇到现实博客园博客,原文链接: http://www.cnblogs.com/XYQ-208910/p/4905048.html,如需转载请自行联系原作者
 
相关文章
|
1月前
|
Swift
Swift 中 struct(结构体)和 class(类)的区别
【10月更文挑战第10天】理解 struct 和 class 的区别对于正确使用 Swift 语言进行编程非常重要。在实际开发中,需要根据具体的需求和场景来选择合适的数据类型,以充分发挥它们的优势,提高代码的质量和效率。
|
21天前
|
Swift iOS开发
Swift 结构体
10月更文挑战第28天
24 0
|
21天前
|
Swift iOS开发
Swift 枚举
10月更文挑战第28天
25 0
|
6月前
|
API Swift iOS开发
【Swift开发专栏】Swift中的游戏开发入门
【4月更文挑战第30天】本文介绍了使用Swift进行移动游戏开发的基础知识,包括Apple的开发平台(iOS, macOS)、工具(Xcode)、2D/3D游戏框架(SpriteKit, SceneKit)以及Metal图形API。Swift游戏开发涉及游戏循环、UI设计、逻辑、图形音效和网络编程。通过实例教程展示如何在Xcode中创建2D游戏,从创建项目到实现用户交互、音效和测试。掌握这些基础知识,开发者可快速入门并逐步进阶到更复杂的游戏中。
209 1
|
6月前
|
存储 定位技术 Swift
【Swift 开发专栏】Swift 中的枚举与结构体
【4月更文挑战第30天】本文探讨了Swift中的枚举与结构体,包括它们的定义、用法及差异。枚举用于表示有限状态或选项,如游戏状态;结构体适合表示具有特定属性和行为的数据,如商品信息。两者均可定义属性和方法,作为函数参数。枚举以整数存储,不可继承,结构体按属性存储且可继承,更灵活。理解两者特点有助于提升编程效率。
39 0
|
6月前
|
安全 Swift iOS开发
【Swift 开发专栏】Swift 语言入门指南
【4月更文挑战第30天】Swift是苹果公司的现代编程语言,以其高效、安全和简洁深受喜爱。它融合了类型推断、闭包和泛型等特性,提供强大的内存管理,支持iOS、macOS等多个平台开发。基础语法包括变量、常量、数据类型、运算符和控制流语句。高级特性涵盖函数、闭包、类与结构体、协议以及泛型。学习Swift能为开发者奠定坚实基础。
76 0
|
6月前
|
Swift
Swift 中的枚举(Enum)
Swift 中的枚举(Enum)
51 2
|
6月前
|
存储 数据处理 Swift
在Swift中,类(class)和结构体(struct)
在Swift中,类(class)和结构体(struct)
70 1
|
存储 编译器 Swift
Swift-进阶 08:枚举enum
Swift-进阶 08:枚举enum
624 1
Swift-进阶 08:枚举enum
|
Swift
Swift实用小册08:Class类的Struct结构体的使用
Swift实用小册08:Class类的Struct结构体的使用
273 0
Swift实用小册08:Class类的Struct结构体的使用