枚举:
swift中的枚举有些类似于类这个概念,它有自己的属性,也可以有自己的方法
枚举中的成员有原始值和实际值之分,原始值用来枚举成员的排序次序,默认从0开始
枚举出来的成员值就是实际值
可以通过toRaw和fromRaw函数转换原始值和枚举值
也可以使用字符处或浮点数作为枚举的原始值
具体举例如下:
//给扑克牌内容声明一个枚举(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创建结构体。结构体支持多个与类相同的行为,包括方法和构造器。
一大重要的区别时代码代码之间的传递总是用拷贝(值传递),而类则是传递引用
对于传值调用,是把实参户值传递给形参,此时形参是要被分配空间的,二呢对形参做的任何操作是不会改变实参的值的
对于传址(引用)调用,是指传递实参的地址,即形参和实参的指针指向同一块内存区域,任何一方对数据做修改,值都会改变
//声明一个扑克牌结构体,它有扑克牌内容和花色这两个枚举类型的成员变量
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”
时间: 2024-12-28 06:14:39