[分享] Swift2.0 基础语法大全

2015-12-03 15:35:38 +08:00
 maiziedu

作为 iOS 开发的最新基础语言, swift 语言的重要性不用多说,特别是随着 2.0 的问世,越来越多的人开始研究、使用 swift 编程语言。今天小编在网上搜罗了一些 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 中如何使用工具来分析代码》 http://www.maiziedu.com/group/article/9554/
文章来源: iOS 开发和七七八八

2446 次点击
所在节点    iOS
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/240879

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX