Swift基础(一)—基本数据类型,字符串的操作

「学习笔记」系列又和大家见面啦~嗯?之前应该是去年的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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180605G1W9Y600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券