Swift_学习笔记_枚举和结构体

枚举

  • Swift中的枚举除了具有基本的类型限制和别名使用外,还可以进行继承以及遵守协议。

枚举的声明

  • 枚举的声明需要关键字:enum
  • 所有的枚举值可以被写在一行
enum Toward1{
    case Forward
    case Back
    case Left
}
enum Toward2{
    case Forward,Back,Left
}

枚举的值

enum Toward1:Int{
    case Forward = 1 // 枚举值进行赋值
    case Back
    case Left
}
print(Toward1.Forward.hashValue) // 0 枚举的原始值 
print(Toward1.Forward.rawValue) // 1枚举的赋值
print(Toward1.Back.rawValue) // 2
  • 如果枚举没有进行赋值,则枚举只有原始值,从0开始
  • 如果枚举赋值类型为Int类型,则会逐渐递增
  • 如果枚举值赋值类型为String,如果没有进行赋值,则赋值为case值
enum Toward3:String{
    case Forward
    case Back = "second"
    case Left
}
print(Toward3.Forward.hashValue) // 0
print(Toward3.Forward.rawValue) // Forward 
print(Toward3.Back.rawValue) // second
print(Toward3.Left.rawValue) // Left

枚举的使用

结构体

结构体的声明

  • 结构体的声明需要struct关键字
  • 在进行结构体声明时需要声明属性类型,如果不声明属性类型,则需要赋初值,便于编译器进行类型判定

结构体的构造方法

struct Student{
    var name:String
    var sex:String
    var age:Int
}
struct Student1{
    var name = "LI"
    var sex = "GIRL" 
    var age = 20
}
  • 空参构造方法
// 如果结构体声明时没有初始值,则不能用空参构造方法
var wang = Student1()
  • 全参构造方法
var wang = Student(name: "wang", sex: "man", age: 20)

结构体的赋值和取值

  • 取值可以使用点语法进行取值
struct Student1{
    var name = "LI"
    var sex = "GIRL"
    var age = 20
}
var wang1 = Student1(name: "wang", sex: "man", age: 20)
print(wang1.name) //wang
wang1.name = "Li"
  • 结构体赋值
wang1.name = "Li"
print(wang1.name) // Li

结构体的嵌套

  • 对于嵌套的结构体进行访问,访问内层结构体属性可以采用多层点语法进行访问
struct Teacher{
    var name = "Li"
    var age = 24
}
struct Student{
    var name:String
    var age:Int
    var teacher:Teacher
}
var Lilei = Student(name: "lilei", age: 20, teacher: Teacher(name: "wang", age: 30))
print(Lilei.teacher.name) //wang

结构体的值拷贝类型

  • 结构体是值拷贝类型(相对于引用类型而言),即对其中一个实例的属性进行修改,并不会影响另外一个实例的属性
var lilei2 = Lilei
lilei2.name = "lilei2"
print(Lilei.name) // lilei
print(lilei2.name) // lilei2
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值