「学习笔记」系列又和大家见面啦~嗯?之前应该是去年的Python学习笔记吧。上次学Python主要是为了后台抓取Ingress数据组建自己的成就跟踪系统,结果用来抓取的号被官方封了(是的,直接后台调接口是违反用户协议的),而且官方不久之后也取消了Guardian牌子,所以也就失去了继续做下去的意义。这次呢是想做一个app,目的是做Ingress任务查询工具,后台依然是Python,前端嘛,就要自学Swift咯~
常量、变量的声明
在Swift中,常量的声明用,变量的声明用。在声明时可以加上「类型标注」,以显式指定数据类型。若没有显式指明数据类型,那么Swift会自动进行「类型推断」,以第一次被赋值的数据类型作为该变量或常量的数据类型。
letstrA ="声明一个常量"
varintMathScore:Float=78.5
上述代码中,第一行定义了一个常量,并且赋值了一个字符串,因此该常量由类型推断其数据类型为字符串类型。第二行定义了一个变量,数据类型显式标注为Float类型,并赋初始值78.5。
Swift通过来打印输出,我们可以通过「 字符串插值」直接在字符串中使用变量或常量,而不用进行字符串拼接。
varintMaxLength =10, intMinLength =
print("The current range is\(intMinLength)~\(intMaxLength)")
// 输出为:The current range is 0 ~ 10
基本数据类型
整数
Swift中整数有8,16,32和64位的有符号和无符号整数类型。如果声明时不进行类型标注,则在赋值时推断为Int类型,该类型长度与当前平台的原生字长相同。
print("Int16 range is\(Int16.min)~\(Int16.max)")
// 输出为:Int16 range is -32768 ~ 32767
浮点数
Swift的浮点数有Float和Double两种,在类型推断时会推断为Double。由于计算机本身的机能限制,在使用浮点数进行运算时,需要考虑到精度和误差。
数据类型转换
在编写代码时难免会遇到需要数据类型转换的时候,举例如下:
varscore =99.0
varmath:Float=80.4
varsum =Float(score) + math
// 此时sum的结果为179.4
// 如果改成score + Double(math),结果还是179.4吗?
布尔型
这种数据类型只有两个值,即和,通常会在条件/循环控制语句中用来控制程序的走向。
元组
Swift中的元组,如果是声明为变量的话,是可变的,这需要跟python中的元组区分一下,后者是不可变的。
vartupleScore = (name:"shirley", math:"98", english:"97")tupleScore.english ="100"
print(tupleScore.english)// 输出为:100
元组的定义方式比较多样,除了上面这种给每个元素命名的方式,也可以省略命名,在调用时略有区别:
lettuplePersonal: (String,Int,String) = ("zhang",23,"Female")
print("Name:\(tuplePersonal.), Age:\(tuplePersonal.1), Gender:\(tuplePersonal.2)")
// 输出为:Name: zhang, Age: 23, Gender: Female
字符串
字符串的初始化有如下两种:
varstr1 =""
varstr2 =String()
可以用判断该字符串是否为空。上面第二种初始化方法可以把字符合并成一个字符串:
varchs: [Character] = ["S","h","i","r","l","e","y"]
varstrMyName =String(chs)
print(strMyName)
// 输出为:Shirley
字符串的索引
Swift对每一个String值都有一个关联的索引类型,可以通过访问这个索引类型来定位一个字符在String中的位置。类似数组的下标,它是从0开始的,要注意下标/索引越界的问题。
varstrMyName ="Shirley"
print(strMyName.count)
print(strMyName[strMyName.startIndex], strMyName[strMyName.index(before: strMyName.endIndex)])
varindexMyName = strMyName.index(strMyName.startIndex, offsetBy:4)
print(strMyName[indexMyName])strMyName.insert(contentsOf:" Gu", at: strMyName.endIndex)
print(strMyName)
//输出如下:
//7
//S y
//l
//Shirley Gu
具体每个方法的含义和使用说明,可参阅如下参考链接:
http://www.swift51.com/swift4.0/chapter2/03\_Strings\_and\_Characters.html#concatenating\_strings\_and\_characters
E N D
领取专属 10元无门槛券
私享最新 技术干货