学习iOS开发,swift语言 肯定是重点学习的一部分。虽然swift刚出来不久,且2.0版今年才出来,不过还好,网上的资料还算比较多,分享一个我在学习swift2.0的时候,查阅过的不错的基础语法吧。
变量类型&数值计算
1、Float/Double/Int可强制用 String() 转换,通用类型转换可用”\(var)”,String转换Int可用 Int()
2、变量名大小写区分
3、类型推断支持float=1+0.3, 但不支持float=int+0.3,即a=b(为一个整数变量)+0.3非法
4、元组类似于简单typedef,可定义不同类型数据为一组,但无指针和数组;强制类型定义不可与元素命名共存
5、赋值语句 不返回值 ,语句执行成功与否不能作为bool值赋给变量或作为判断条件,即succ=(b=a+1)非法
6、求余运算%支持实数,但 不准 !!!因为是实数操作,能用二进制表示的正确,否则无法获取正确值。如(1 % 0.25) OK, (1 % 0.2)则结果不对(0.2无法准确表示的原因)
7、基础数据类型都是结构体
8、枚举的值是case名本身,而不是Int的另称
流程控制
1、if接受 可选变量/绑定 作为判断条件,assert不行
2、assert(bool, string)的意义表示 条件不成立 的话则退出,所以判断条件要写永远成立的那种;正式版中不起作用
3、for-in循环中间用来做index的变量不需要定义,在循环内部不可改变,即使定义为变量;跟C相似的for (;;)循环(事实上不需要括号)却相反: 必须定义,循环内可变
4、case语句中,不需要写break,一个case后必须有语句;default则可以在case全范围覆盖条件时省略,否则必须写
5、case语句的判断条件可以重复,但只会执行第一个匹配
6、case中的 fallthrough 不能用在有有变量pickup的case中
7、continue & break有一个类似goto的用法,可以跳转出不止一轮循环,但只能用于循环内
字符串
1、不必关心内存,指针等问题,已封装
2、大量API使用 Foundation ,即继承自oc
3、与数组不同,其API中的 Index 是范型而不是整型
4、字符串之间可以相加,字符不行
5、每个字符都是一个 可扩展的字母集 (Extended Grapheme Clusters),可能由一个或多个Unicode标量构成,类似于偏旁部首组成一个字
6、对于字符来说,不可使用 + 运算来组成字母集,即使相加也是几个字符而不会自动生成一个;但对于字符串,会自动归集
7、使用()时,括号内不能有转义符,包括“”
8、和C语言不同,字符串并非字符数组,在Swift里 String.characters 才是和数组类似的存在,拥有类似的属性和方法
函数调用
1、返回值可以为空(Void),Void实际上是一个空的元组
2、参数可加外部参数名,有外部参数名的参数调用时必须全部强制使用外部参数;也可加默认参数值;有默认值的参数调用时必须加上外部参数名,除非强制用占位符 _ 命名外部参数名
3、可变参数最多一个且必须放在最后
4、即使参数为var,也不可改变函数外的值,需要用 inout (即传指针)
5、C中函数本质为指针,指向入口;Swift中函数为Function Type变量,可以赋值,调用,作为参数传递,作为返回值等,只要参数&返回值定义匹配即可
数组 & 字典 & 集合
1、数组可以理解为一个相同元素链表
2、可以使用 arr[a…b]=[…] 来做替换操作,甚至增加减少元素个数,但表达式中下标不能越界
3、字典存储数据对, 无序 ,不可用下标访问,但 enumerate 可以拿到一个index
4、字典的key是唯一的,相当于有对应键值的关键字集合,对应的键值可以相同
5、字典可以用 .keys & .values 来分别获取关键字和键值的数组,但只是罗列,不去重
6、遍历数组用“for i in 0.. \< arry.count”时, 记得别弄错区间!!
7、如果没有指定类型,数组 默认使用Object类型 ,本质上是OC的NSArray,且无法使用append(使用count&repeatedValue构造器除外,会自动推导类型)
8、[ [ [Type] ] ] 申明的多维数组不是严格N维矩阵,相同维度上的元素数量可以不同,且可以通过赋值改变,更像是多维链表
枚举
枚举不是单纯Int值的别名,可以是任意类型
以上就是Swift2.0中的一些语法方面的基础知识,个人觉得对初学者很有用,不清楚对你有没有用,如果你也觉得有用的话,就赶紧收藏起来吧~~
相关文章:《swift中如何使用工具来分析代码 》