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更简洁 明了