swift100天 第二天:复杂数据类型

数组 Array

  • 数组是有序的
  • 用来存储多个值
  • 数组容量可大可小
  • 用下标方法,从0开始
  • 不能访问一个不存在的下标
 let students = ["张三", "李四", "王五"]
 print(students[0])
 var cities: [String] = ["London", "Paris", "New York"]
 var readings: [Bool] = [false, false, true, false]
 var scores: [Int] = [10, 12, 9]
 S
 print(scores[11])
// Index out of range
 

集合Set

  • 没有顺序
  • 不能重复
  • 要传入一个数组
let colors = Set(["red","green","blue"])
print(colors)
// 输出  ["blue", "green", "red"] ,说明没有位置的顺序

let colors2 = Set(["red","green","blue","blue"])
print(colors2)
// ["red", "green", "blue"] ,去了重复项

元组Tuple

  • 大小固定,创建时就确定大小,不能添加或删除
  • 不能修改类型
  • 可以通过下标或命名来访问,但不能访问不存在的元素
  • 从0开始
  • .下标语法访问
  • 元素不能含有多行字符串
let student1 = ("liding",40)
// 下标访问
print(student1.0)

// 命名访问
let student2 = (name:"zhangsan",age:32)
print(student2.name)

// 网站的名称和网址放在元组中是非常合理的,也不能修改,因为apple的网址就是这个
var website1 = (name:"apple",url:"www.apple.com")
print(website1.name)

// 放在数组中就不太好看,也没有什么意义
var website2 = ["apple","www.apple.com"]
print(website2[0])

数组vs 集合 vs 元组

  • 固定的,每个项目不改变的就用元组
  • 如果要求值是唯一的,就用集合
  • 如果有顺序要求,就会数组
let address = (city:"郑州", street:"航海路", house:"34-1")
let members = Set(["黄金", "普通", "白银"])
let language = ["python","javascript","css","nodejs","swift"]
ArrayTupleSet
建立[]()Set([])
顺序--
重复可以可以不行
访问a[0]t.0 t.name

字典 Dict

  • 使用[]建立
  • [key:valu,key:value...]
  • 字典和数组是来存大量数组的容器,字典用key来访问,数组用index来访问
  • key可以是数字,就用d[key]来访问
  • 字典不能用下标访问

字典的默认值

let fav = [
    "张三": "烩面",
    "李四": "面条"
]
print(fav["张三"])
// 烩面

print(fav["赵六"])
// nil 不存在为空

let fav1 = [
    "张三": "烩面",
    "李四": "面条"
    
]

print(fav1["赵六",default:"不知道"])
// 不知道 不存在,返回不知道

空的集合(collections)

  • Array Set Tuple Dictonary 都是存储多个值的元素,可以叫做collections
// 空的字典,以后可以再放内容
var teams = [String:String] ()
teams["zz"] = "red"

// 空的数组
var scores = [Int]()

//统一写法 数组 字典 集合
var a = Array<Int>()
var d = Dictionary<String,Int>()
var s = Set<String>()

枚举enum

一般来描述可以有限列举的对象,如玩家状态,星期,月份,错误码,性别代码,选择项目

// 定义类型 一般大写字母开头
enum Week {
    case 星期一
    case 星期二
    case 星期三
    case 星期四
    case 星期五
    case 星期六
    case 星期天
}

// 声明这个变量,变赋值是其中的一个
var day:Week = Week.星期一
print(day) //星期一



enum Playerstate {
    case idle
    case walk(speed:Int)
    case run(speed:Int)
    case fly(speed:Int)
    case die
}

var lp: Playerstate = Playerstate.walk(speed:30)
print(lp) //walk(speed: 30)

// 直接推断出类型
var lpidel = Playerstate.idle
print(lpidel)

枚举的原始值

  • rawValue
// 声明枚举进,要声明其类型为Int
enum Playerstate:Int {
    case idle = 10
    case walk 
    case run
    case fly
    case die
}

var p = Playerstate.idle
print(p) //idle

//idle是10,walk就是11
var p1 = Playerstate(rawValue: 11)
print(p1) //Optional(firstswift.Playerstate.walk)


总结

  • Array Set Tuple Dictonary 都是将多个值存在一个变量的方法,使用哪个取决于你的行为
  • Array是有顺序的,按按照数字位(index)访问
  • Tuple大小是固定的,可以用数字位或名称来访问
  • Dictonary是根据键名来访问
  • Enum是对相关值进行分组的一种方法,所以在使用过程不致于出现拼写错误
  • 枚举有原始值,也可以存储关联的信息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小和光同尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值