swift 字符串多行_Swift初见

今日份毒鸡汤,我干了,你随意~~~

偶尔的发泄很有必要。毕竟弦绷得太紧,也需要适当放松。当痛苦让你快承受不住时,放声大哭也没什么不可以。只是请记得,不要在悲伤的情绪里沉溺太久,也不要在崩溃的边缘停留太久。那些让你痛苦焦虑的事情,或许实际上并没有你想象的那么严重,很多情况下只是自己吓唬自己罢了。所以,你要做的不是接下来立刻赢,而是现在不能输。终有一天,那些你受过的苦,吃过的亏,担的责,忍的痛,都会变成光,照亮前行的路。虽然目前还是单身,虽然仍在大城市拼搏,虽然时常被家人催婚,虽然偶尔也会崩溃。虽然自己拼命往上爬的样子一点都不优雅,还有些笨拙,甚至因此拉高了老板的期待值而受到同事们的讨厌和排挤。但,那又怎么样呢?

之前整理Kotlin相关文章的时候,其实搜过几篇Swift与Objective-C的对比(虽然那会儿的初衷只是为了引出Kotlin与Java的对比),结果后来也是不了了之了……

通常来说,编程语言教程中的第一个程序应该就是在屏幕上打印“Hello,world”。在swift中,也可以用一行代码实现:

print("Hello, world!")

abad36fcdcacfe1c6b15ab694401c1f9.png

上面的代码就是一个完整的程序了,不需要为了输入输出或者字符串处理导入单独的库。全局作用域中的代码会被自动当做程序的入口点,所以也不需要main()函数,同样不需要在每个语句结尾写上分号

注意:最好的体验是把这里面涉及到的内容作为Playground文件在Xcode中打开。Playgrounds可以编辑代码并立刻看到输出结果。(我一定是瞎了,当时没有看到这句话,还特意问了一遍……自闭了)

说明:由于我的笔记本是XPS不是MAC,所以只能网上找一个Swift在线工具编辑

这篇文章只是最初级的介绍,会通过一系列编程示例让大家对Swift有初步的了解,如果有什么不理解的地方也不用担心(因为我也是初来乍到、人生地不熟的小白痴一枚),或许以后会再出几篇类似的文章来详细讲解这里面介绍过的内容。

简单值

使用let来声明常量,使用var来声明变量

一个常量的值,在编译的时候,并不需要有明确的值,但是只能为它赋值一次。也就是说,可以用常量来命名一个值,一次赋值就可以在多个地方使用。

71c70cd85029cd0711874f0444e3ebcf.png

那如果就想修改myConstant的值怎么办呢?我们先试试直接修改:

8edf250770172555e180b5b1cda2421d.png

好吧,报错了,报错信息说的很清楚,意思就是不能为myConstant赋值,因为它是let常量,但是将let改为var就可以改变它的值了,还友好地指出了在哪里改,也是优秀了。

那接下来我们按照提示中的内容修改一下看看是否符合预期:

63717e760a0fa0408239b2819922fa28.png

果然,搞定啦~这就是接下来要演示的变量。被var声明的变量值是可以被修改和反复赋值的。

常量或变量的类型必须和赋给它们的值一致。但是,有时候也不用明确地去声明类型,编译器就会根据声明的变量或常量来自动推断它们的类型。比如上面的示例中,编译器就推断出myConstant是个字符串类型,因为它的初始值是个字符串。

如果初始值没有提供足够的信息或者没有初始值的情况下,就必须在变量后面声明类型,用冒号分隔

7a315c14103470f521ec5e8db8c490ae.png

如图,如果直接声明一个变量,编译器没办法推断出它的类型,就会报类型缺失的错误。在变量名后面加上类型即可。

var myConstant: String

1373fea05b4b59057ef3da111ef9f855.png

也可以在声明类型的同时进行赋值。

备注:在Swift中,值永远也不会被隐式转换为其他类型,如果需要把一个值转换成其他类型,一定要使用显式转换

07a64a9a42f47a28f419b1e899f52ac1.png

如图,将字符串和整型进行运算就会报错,执行结果的第一行就会指出在第5行第24个字符处出现错误,运算符"+"不能应用于"String"和"Int"类型的操作数。考虑到程序的预期结果,所以只需要将常量width进行显示转换为字符串就可以啦~

ff5a5a4b36e9523bb91b931c4f7d1d02.png

还有一种更简单的把值转换成字符串的方法:把值写到括号中,并且在括号前面写一个反斜杠"\"。如图:

980675717f0c0d7ce6501f6b039087c3.png

注意:这种方式只能在字符串内部进行转换,也就是字符串插值只能出现在字符串文本中。以下两种示例都是错误的

a9585976b5a22b3697ab19cd62c96f48.png

ee78194782ee6caf5bcad2f1faef9a0c.png

改为在字符串内部进行值转换就可以啦~

d090a91d36d87446a944828e63dfd37f.png

使用三个双引号(""")来包含多行字符串内容,每行行首的缩进会被去除,直到和结尾引号的缩进相匹配。如:

e85c922ecbbbf590c0f4fcf0d5801ede.png

使用方括号[]来创建数组和字典,可使用下标或键(key)来访问元素。最后一个元素后面允许有逗号(可能是为了方便加新值)。

首先来看数组(乍一看和Python的列表有点像,实际上不完全一样),赋值以及类型声明和上面类似,可通过下标对数组中的值进行更改:

0b0b3e31e9f4afa4bf77f7fcffbe7edb.png

但是如果使用let来声明数组,数组就是不可变的了:

bda4f84f418b4850859d06be4ee12df2.png

接下来我们再看字典,也是key-value形式的(注意:并不是Python中大括号{}哦),可通过键值对字典内的元素进行添加或修改:

0f652e57f528186cc66a20cc8bc67e5e.png

代码3-6行定义了一个字典,第7行往字典中添加了新值,第8行对字典中原有的值进行了修改(如果key不存在,则添加新值;如果存在,则修改key对应的值),下图是将此修改进行注释,运行后的结果如下图:

c7ec307683686447235552fe89c8b3d7.png

同样的,数组中也可以添加元素,通过使用append()函数即可:

757de4cf8ab529ccee23b24475e69791.png

使用初始化语法可以用来创建一个空数组或空字典

435bd5758b3d3dc17e51c26691c90663.png

也可以通过上面介绍变量、常量中的类型声明方式:

071f1f16a9fa961fc5ec887f597fd10f.png

如果类型信息是可以被推断出来,可以直接用[]和[:]来创建空数组和空字典——比如,在给变量赋新值或者给函数传参数的时候。

shoppingList = []occupations = [:]

在遍历数组的时候,如果同时需要每个数据项的值和索引值,可以使用String的enumerate()方法来进行数组的遍历,如图:

46ca47572c3a9bd71a103bbb2e9b8168.png

如果只是想遍历数组中的数据项,可以直接使用for循环即可(类似于Python中的遍历列表):

c7ebe9a95b1bbe3efe56a5a57938a89e.png

字典中如果要移除某个值,可以使用removeValueForKey()方法来移除字典的key-value键值对,也可通过直接指定键的值为nil来移除key-value键值对。

8fafeb7623102ea7db52555a2163bfcf.png

备注:有警告,先忽略,主要看结果~如果字典中的键对应的值被移除了,就会展示为nil,和空不一样。

遍历字典和上面说的遍历带有索引值的列表一样,如图:

b5b8d3091235acd5a1cb684a8fa30a3a.png

备注:代码6-9行中index取的是字典中的各索引,从0开始;item取的是字典中的键对值,格式为:(key:XX,value:XX)。代码11-14行则是直接取出字典中的key和value值。

先酱~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值