Swift

Swift基础语法总结

打印

print(内容)与C语言有点不同

常量

let 常量名 = 赋值

变量

var 变量名 =赋值
​ 形式; var 变量名 :int = 3 由于Swift有类型推断,所以类型可以省略不写
​ Swift中默认浮点型是 Double(双精度)

类型安全

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

布尔型 Bool 表示逻辑上的“真”和“假”

var 资金充足情况 :Bool = true
资金充足情况 = false

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

·形式(一般):(3,“天”,“Swift”,“3.0”)
·形式(前缀):(day:3,unit:“天”)
var x =1
var y =2
var z =3

var 向量 =(1,2,3)
访问(从0开始,类似数组):向量.0 (即x)向量.1向量.2

var (x,y,z) =(1,2,3)
访问:x
​ y
​ z 即可

Optional :代表变量可能有值得情况

·如用户资料的选填部分,住址 性别等辅助信息
·形式:var 变量 :类型?,默认是无值(nil)

var addr =“内蒙古自治区”

字符串和字符

·字符串是有序的字符集合,或者叫文本
·String是字符串类型,Character是字符类型
·2个字符串可以通过 + 来连接
·通过字符串插值可以合成一个长字符串

字符串字面量 包含双引号“”的值成为字符串字面量
·空字符串:用“”字面量
var a = “”
·判断字符串是否为空
a.isEmpty
b.isEmpty

字符
·用Character类型来定义字符串

var a :Character = “w”

·可以对一个字符串的Character属性进行循环,来访问其中的单个字符

let words =“Swift语法总结”
for word in words.Characters {
print(word)
}

连接字符串和字符
·用+

let a =“w”
let b =“h”
let c =“y”
var word =a+b+c why

·向字符串添加字符,用append方法
let number:Character =“12”
word.append(number) why12

字符串插值:组合常量/变量/字面量/表达式成一个长字符串
let name =“ss”
let type =“g”
let number =“11”
let price =“155.8”
let 订单提示 =“(name)先生,您订阅了(type)(number)的机票,需要支付(price)元”

集合类型

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

数组(有序可重复,用于存储同一类型的值)
·定义:Array[类型]
let array :[int]
·创建一个默认值的数组
array = int
·创建一个有序范围的int数组,Array(起始值…终止值)
·用数组字面量来创建数组:[值1,值2…,值N]
var places =[“beijing”,“shanghai”]
1.计数

places.count places.isEmpty

2.添加,添加一个同类型数组 +=

places.append(“wuhan”)

3.获取元组:数组名[索引],从0开始

places[7]
4.插入:insert
places.insert(“sy”,at:元素序号)
5.移除
places.remove(at:元素序号)

集合(Set),值无序不重复,适合存储唯一性数据

·定义:<元素类型>
let cardn :Set =[1,2,3,4]
`用数组字面量创建集合
let citys :Set =[“shanghai”,“beijing”]
元素计数,count,空否:isEmpty
插入(insert)
citys.insert(“guangzhou”)
移除:remove
是否包含某元素:contains
citys.contains(“beijing”)
转换为数组:sorted
let citysArray = citys.sorted()

集合类型(字典)值无序可重复,但每个值有唯一的键(Key)

·定义:DIctionary<键类型,值类型>
var a :Dictionary<String,String>

·用字典字面量来创建字典,键与值之间用冒号隔开
var airports =[“PVG”:“shanghai pudong”,“SHQ”:“hongqiao Airports”]
添加或更新:字典变量[键]=值
airports[“SHQ”] = “hongqiao Airports”
获取,依然用下标
airports[“SHQ”]
移除
airports[“SHQ”] = nil
循环一个字典 for in,因为键值对2个元素,用元组变量
for (key,value)in airports{
print(key,value)

控制流

循环语句for in,while 执行固定次数的操作,或操作一个序列(如数组)中的每一项
1.序列中的每项都参与. for in 之间加一个代替每项的名
let places =[“beijing”]
for place in places{
print(place)
}

var sum =0
for i in 1…100{
sum=sum+i

} sum=5050

2.只循环固定次数,可以省略名,比如打印5次相同的文本
for _ in 1…100{
print(“学习”)

}
while循环执行一系列循环次数未知的序列
格式:while 条件 {语句}
var I=1
var sum=0
while i <=100{ sum=sum+i i+=1

}
判断

continue break
switch 超过2个以上条件判断的场合
var temp =30
switch temp{
case 35…40: print(“天气炎热”)
case 25…34:print(“气温不算太热”)
default(默认):print(“室外温度已经超过本空调的控制范围!”)
}

函数

·形式:func 函数名(参数1:类型,参数2:类型,…)->返回结果的类型{执行语句}
·调用:var 变量名称 =函数名(变量1,变量2,…)
🌰加法函数

func add(a: Int, b: Int)->Int {
return a+b
}
var sum = add(a:3,b :4)
add(a:4, b:-2)

—–也可以无参数无返回值,不需要结果 多返回值需要用元组
​ func maxMin() ->(Int,Int) {return(Int,min,Int,max)} maxMin().0 maxMin().1

闭包(是一种函数的简写形式,省去函数名,把参数和返回值放入花括号内)

{ (a: Int, b:Int)-> Int in
执行语句
return …

枚举enumeration
·计数、列举(有限的情况)
·与Switch连用

定义和使用 :
·给定一个名称,然后把每一种情况列举出来.
enum Weather{
case sunny case cloudy case snow


使用 Weather.cloudy

面向对象编程

属性 是一个类/结构体/枚举关联的量
实例属性:实例化后才能使用
存储属性:保存单个类型的变量
类型属性:属于类型固有的,实例不能调用

class 人物{
var id =“”
var money =“”
}
let Snake = 人物 ()——赋值
Snake.id = “sss”
Snake.money = 666

计算属性:由其他属性计算得出的,由getter、setter组成

class之间的“父子”关系的体现,子类可以继承父类的属性和方法
·好处:无需在子类声明。

子类忽略父类的定义,原样照抄后在类型定义前加 override

初始化!

·1.类的定义没有给属性默认的值,需要在init中指定**init(){}称为构造器
class Roomtemp{
var season :String
var temp :Int
init(season:String,temp:Int){
self.season =season
self.temp = temp————–self是为了区分参数和类定义中的同名变量

·2.结构体定义不需要指定属性默认人的值,因为默认提供一个包含所有属性初始化的构造器
struct更简洁 明了