美文网首页
Swift4.0基础(一)基本常量以及集合类型

Swift4.0基础(一)基本常量以及集合类型

作者: 可惜你不是我的双子座 | 来源:发表于2018-03-04 12:06 被阅读18次

简介

1.Swift - 雨燕,敏捷,快速

  • 新一代苹果平台(iOS/macOS/watchOS/tvOS)的APP及游戏开发语言。
  • 语法与JavaScript、c#等语法类似,上手极快。

2.历史和未来

  • 2014年6月退出第一个版本,由苹果员工Chris Lattern历经4年发明。
  • Swift已开源,计划在未来几年逐渐替代Objective C语言,成为iOS开发的主流语言。
  • 长期致力于成为未来20年内运行到每一部只能设备上。

3.Swift的创新

  • 引入Optional(可选类型)
  • 支持传统的"面向对象编程",提升至"面向协议编程";即由"类"到"值",提倡使用结构体取代累(class),"遵守协议"取代"继承"。

1.常量

常量的定义

  • let常量名
  • 常量名可以是任意文字、长度不限。
let 女朋友数量 = 2

变量

var className = "学习Swift 3.0"
className = "现在学习Swift 4.0"

如何正确使用常量与变量

  • 总是优先使用常量。
  • 交给编译器决定。

2.Int和类型推断

值的类型和类型推断

  • 3 这样的整数,在Swift中称为Integer类型的值,简写Int
  • 形式:var 变量名:Int = 3.由于Swift有类型推断,类型可以省略不写。
var run1Num : Int = 3 // 可以省略类型声明
var run2Num = 3

3.类型安全

  • 变量一旦定义,其类型不可更改,即:不能给变量一个类型不同的值。

4.Bool

布尔型:Bool,表示逻辑上的"真"或"假"

  • 只有2个值,truefalse
var vip = false
vip = true

5.Tuple

元组(Tuple):定义变量的一个组合

  • 形式(一般):(1,2,3)
  • 形式(前缀):(day:3, Unit:"天", lang:"Swift", ver:"4.0")
var (x,y,z) = (1,2,3)
x
y
z

var studyClassName = (day:3, Unit:"天", lang:"Swift", ver:"4.0")
studyClassName.day
studyClassName.Unit
studyClassName.lang
studyClassName.ver

6.Optional

可选类型(Optional):代表变量可能有值的情况。

  • 如:用户资料的选填部分,如住址/性别等辅助信息
  • 形式:var 变量 :类型?,默认是无值(nil)
var addr : String? // 等价于 var addr : Optional<String>
addr = "深圳市"

7.基础操作符

8.字符串和字符

String是字符串类型, Character是字符类型

  • 空字符串:用""字面量
var a = ""
var b = " "
  • 判断字符串是否为空
a.isEmpty  // true
b.isEmpty // false

字符

  • Character类型来定义字符串
var me = "我你" // 默认是字符串
var you : Character = "h"
  • 可以对一个字符串的characters属性进行循环,来访问其中单个字符。
let words = "攻城掠地"

for word in words {
    print(word)
}

连接字符串和字符

  • 用 +
let a = "洪荒"
let b = "少女"
let c = "傅园慧"

var famous = a + b + c
  • 向字符串添加字符,用append方法
let number : Character = "牛"
famous.append(number)
  • 字符串插值:组合常量/变量/字面量/表达式成一个长字符串
let name = "swift"
let type = "G"
let numbers = 11
let price = 158.5

let 订票提示 = "\(name)先生,您订购了\(type)\(numbers)的往返票,需支付\(price * 2)元"

控制流

1.for in
for-in循环 执行固定次数的操作,或操作一个序列(如数组)中的每一项。

  • 序列中的每项都参与.forin之间加一个代替每项的名。
let places = ["beijing","shanghai","guangzhou"]

for place in places {
    print(places)
}

var sum = 0
for i in 1...100 {
    sum += i
}
sum
  • 只需循环固定次数,可以省略项名。比如打印5次相同的文本。
for _ in 1...5 {
    print("学习swift")
}

集合类型

  • 一组同类型的值的组合,根据组合的整体特性分为:
  • 有序可重复 - 数组(Array)
  • 无序不重复 - Set
  • 无序可重复,但每个值有唯一的键(Key)-字典(Dictionary)
  • 批量处理集合中的元素,可以使用for in循环

数组(Array)

  • 创建一个有默认值的数组
arrar = [Int](repeatElement(3, count: 10))
  • 创建一个有序范围的Int数组,Array(起始值...终止值)
let array2 = Array(1...5)
  • 用数组字面量来创建数组:[值1,值2,值3,...值N]
let array3 = ["beijing","shanghai","guangzhou","shenzhen","nanchang"]
  • 元素计数:count,空否:isEmpty
array3.count
array3.isEmpty
  • +添加:append,添加一个同类型数组 +=
array3.append("wuhan")
let haiwaiPlace = ["NewYork","London"]
array3 += haiwaiPlace
  • 插入:insert 移除:remove
array3.insert("Paris", at: 2)
array3.remove(at: 6)

集合(Set)

值无序不重复。适合存储具有唯一性的数据,如用户/身份证号码/护照号等

  • 用数组字面量创建集合,无法使用类型推断,但可省略类型。
let cardno : Set = [1,2,3,1,4] // 输出 {2, 3, 1, 4}
  • 元素计数:count,空否:isEmpty
var citys : Set = ["shanghai","beijing","wuhan","hefei"]
citys.count
citys.isEmpty
  • 插入:insert 移除:remove 是否包含某元素:contains
citys.insert("nanchang")
citys.remove("shanghai")
citys.contains("wuhan")
  • 转换为数组:sorted
let cityArray = citys.sorted()
  • 集合间的运算:交差并补,交集intersection,差集subtract,并集union,补集``
var xSet : Set = [1,2,3,4]
var ySet : Set = [3,4,5,6]

xSet.intersection(ySet) // 输出 {3, 4}
xSet.subtract(ySet) // 输出 {2, 1}
xSet.union(ySet) //  输出 {5, 6, 2, 3, 1, 4}
xSet.symmetricDifference(ySet) 输出 {5, 6, 2, 1}
  • 集合间的关系,子集:isSubset(可以相等),严格子集isStrictSubset
let hSet : Set = [1,2,3]
let iSet : Set = [3,2,1,4]

hSet.isSubset(of: iSet) // 输出 true
hSet.isStrictSubset(of: iSet) // 输出 true
  • 父集:isSuperset(可以相等),严格父集isStrictSuperset
iSet.isSuperset(of: hSet) // 输出 true
iSet.isStrictSuperset(of: hSet) // 输出 true
  • 无交集:isDisjoint
iSet.isDisjoint(with: hSet) // 输出 false

字典

值无序可重复,但每个值有唯一的键(key)。

  • 用字典字面量来创建字典,键与值之间用冒号隔开.
var airports = ["PVG":"shanghai pudong","CHU":"Dalian", "DUB":"Dublin Airport"]
  • 计数:count, 空否:isEmpty
airports.count
airports.isEmpty
  • 添加或更新: 字典变量[键] = 值
airports["SHQ"] = "Hongqiao Airport"
airports["CHU"] = "南昌机场"
  • 获取,可以用小标
airports["DUD"] // 如果没有对应键 返回nil
airports["SHQ"] // Hongqiao Airport
  • 移除,用小标把值设为nil
airports["DUB"] = nil
  • 循环一个字典for in,因为键值对有2个元素,用元组变量.
for (key, value) in airports {
    print(key,value)
}
  • 单独使用其中键或值,使用keysvalues(可使用for in)
for key in airports.keys {
    print(key)
}
  • 把键值对分离成数组,用【数组类型】(字典变量.keys),【数组类型】(字典变量.values)
let codes = [String](airports.keys)
let airportFullname = [String](airports.values)

相关文章

网友评论

      本文标题:Swift4.0基础(一)基本常量以及集合类型

      本文链接:https://www.haomeiwen.com/subject/uzilxftx.html