swift是ios开发的标准语言之一,大致看了下,和C蛮像的。感觉自己能做一个app蛮有意思的,苹果也有比较完整的官方文档,这篇文章便是阅读官方文档后留下来的笔记。
只打算看完最基础前面部分,至于后面的内容,还是在实践中学习吧。
01 The Basics
- 常量和变量:和js很像,用let和var,变量类型都差不多,可以自动推测变量类型。
- 输出:println:输出换行,print:输出不换行,输出变量:(变量名)
- 注释:和C++一样
- 断句:行间不强求添加分号,但是行间为了区分两句子就要添加分号。
- 整数转换:显式的:Double(int)
- If:要打大括号,判断部分必须是bool类型的,不能和C一样用0和1
- 元组(tuples):C没有的东西,相当于一个临时的结构体,使用方法很直观,用( _ ,_ )拆解即可。
- 可选(optionals):C没有这玩意,代表有值是x,或者没有值。可以用if来判断它有没有值,在名字后面添加!可以强制按照有值进行转换。nil有点像NULL,表示没有值。类型名字后面有?表示这是可选的。直接在类型后面加!表示这个是隐式可选,相当于在取值的时候自动在最后加了个!。
- 断言(assert):调试用,相当于if print的概念,便于遇到某条件的时候跳出。
02 Basic Operators
和C大同小异,改变的地方有:
- = 不返回值,避免把“==” 写成“=”而不报错
- 数值运算符会检测是否溢出,
- string可以用 + 拼接
- 可以对浮点数求余,如 8 % 2.5 等于0.5
- 区间值:在for里面用,闭区间a…b,半闭区间a..<b
03 Strings and Characters
和C大同小异,改变之处有:
- 可以用加号拼接
- character代替char,可以在for中直接用character来指代string的每一个字符。
- 字符数量:函数countElements(字符串)
- 用==判断是否相等
- 有前后缀判断函数 hasPrefix(前缀) 和 hasSuffix(后缀)
- 有大小写转换函数uppercaseString和lowercaseString
- 有转换为Int的函数toInt()
04 Collection Types
两种集合类型:Array(数组)和Dictionary(字典),看起来这一块和python有点像。
- 数组定义:类型[],也可以直接根据后面的内容简写,让编译器自行推断。
- 数组可以用 +,+=,append,count,isEmpty,下标[0]
- 数组插入:insert(“A”, atIndex: 0)
- 数组删除:removeAtIndex(0),removeLast()
- for in 和python一样,有enumerate
- 字典和python一样,令为nil时相当于删除
- 空字典:Dictionary<Int, String>()
05 Control Flow
- for循环:for in 和 for var index = 0; index < 3; index++{}两种,和python挺像。
- while循环:和C一样
- if判断:和C一样
- switch判断:和C相似,但注意它不会隐形掉入:在执行一个case后直接跳出整个switch。
- 同样有break,continue,return,多了fallthrough(用来改变switch默认禁止掉落的情况)
- 标签语句:name: XXX 便于精确控制break和continue的是啥。
06 Functions
- 函数声明:func A(input: String) → String{return B}
- 函数外部参数与内部参数定义:用空格隔开,或用#表示共用一个,外部名称用于调用函数时使用。(也会缺省地令内外用同一个,就像已经添加了#一样)
- 可变参数:在类型后加上…,可以传入不定数量的同一类型变量,在函数内表现为一个数组
- 输入输出函数:inout类型,会直接修改传入的参数
- 可以直接将函数作为参数之一:写法为(Int, Int) → Int