Swift 简明参考

Swift 是苹果推出的一门新语言,它的语法仍然是在 C 语言基础上的延伸,溶入了面向对象语言和脚本语言的特征,还有一点 Objective-C 的影子。

基本类型

Swift 是强数据类型的,也是类型安全的,常量和变量都有着明确的类型。大多数情况下,编译器可根据赋值推导出类型,从而帮助省略代码书写,使得代码比较简洁。Swift 中的类型包括基本类型(Int, Double等),还包括类、结构和枚举。类型在 Swift 中称作 Type。

定义常量与变量使用 let 和 var 关键字。let 用于定义常量,var 则定义变量,形式为:
var v : Type = .. // 定义一个变量
let c : Type = .. // 定义一个常量
以字典为例,Swift 使用 let 和 var 来定义可修改字典和不可修改字典,这与 Objective-C 中以 NSDictionary 和 NSMutableDictionary 分开实现是不同的。

Swift 的基本类型包括 Int, Float, Double, Bool, String 等。
整型类型其实包含了 Int8, Int16, Int32, Int64 四种类型,在没有明确位宽要求的情况下,使用 Int 即可,编译器会根据机器位宽自动选择。对于整型数值的类型推导,Swift 优先选择 Int 型。
浮点类型包括了32位的 Float 和64位的 Double 两种类型,同样,在没有明确位宽要求的情况下,推荐使用 Double。对于浮点数值的类型推导,Swift 优先选择 Double 型。如果表达式中有整型和浮点型,则推导类型为 Double型。
布尔型 Bool,只能取 true 和 false,Swift 的类型安全不允许像 C 语言那样将整型转为布尔型。
字符串类型 String 是一组 Character 的有序集合,包括了若干 Unicode 字符。

运算符

Swift 的运算符完全涵盖了 C 的运算符,包括:基本运算,一元运算,复合运算,男较运算,关系运算,移位运算符,位域运算等等。

Swift 在运算符上还做了一些扩展。最大的变化是增加了范围运算符 ..< 和 ...
..< 是半开区间范围,表示`[start, end)`,如 1 ..< 3 表示 1, 2。
... 是闭区间范围,表示`[start, end]`,如 1 ... 3 表示 1, 2, 3。
范围运算常用于循环语句和 switch 语句。

Swift 扩展了求模运算符 %,可以对浮点做模运算,如 8 % 2.5 = 0.5。
赋值运算符的语义发生了变化,不再像 C 语言那样返回数值,也即 (a = b) != c 这样的语法不再支持。

Optional

Optional 类型由 Type? 定义,它的引入是为了处理有值/无值问题。一个 Optional 变量要么无值(缺失某类型的值),要么有某种值。无值即 unset,或称为 nil。
Swift 的 Optional 类型可以支持任意类型,包括类、结构和枚举类型。Objective-C 的nil 只能用于 class 这种引用类型,表达的是空指针的含义,含义上与 Swift 也有不同。
可以给 Optional 变量赋 nil,但不能给非 Optional 变量赋 nil。定义Optional 变量但不设初值的,默认被设为nil。

判断一个 Optional 变量是否有值,可以用 if 等条件判断语句,如确定有值,则可在变量后加!来提取类型值,这称作强制取值(forced unwrapping),例如:
if someOptional != nil {
println(“\(someOptional!)”)
}
如果对一个无值的 Optional 变量取值,程序将崩溃。

上述语句还可以可以写作:
if let arg = someOptional {
println(“\(arg)”)
}
这种用法称作 Optional binding。若语句内需要修改 arg,也可以使用 var 关键字。

如果已知某个 Optional 变量有值,可以不必执行检查而直接取值,这类变量在定义时,类型后面添加!标识,使用时表现为普通变量而非 Optional 变量。
let possibleValue : String? = “have value”
let assumedValue : String! = “implicitly unwrapped optional”
在使用 assumedValue 时,无需再加!取值,这种方式称作隐式取值。对于这类变量,仍然可以用 if 等条件判断其是否有值。
可以理解为,隐式 Optional 其实仍是 Optional 类型,只是引用时自动加上了取值操作。

Swift 提供了 nil 合并运算符,形式为:( a ?? b )
若 Optional 变量 a 有值,则取 a 的值,否则返回非Optional变量 b 作为默认值。

数组、字典与集合

数组、字典和集合是 Swift 提供的集合类型。

数组是一组相同元素类型的有序值集合,类型以 Array 表示。数组的定义使用Array<Type>或者使用更简单的[Type]语法定义,比如创建空数组:Array<Int>() 或者 [Int]()。
let a : Array<Int> = [1, 2, 3]
由于 Swift 可以进行类型推导,因此上面的语句也可以写为:
let a = [1, 2, 3]

数组提供了一些属性,如获取数组元素数量的 count 属性,判断数组是否为空的 isEmpty 属性。

数组元素的引用使用下标语法,下标从0开始,支持范围运算符,如a[0] 或者 a[0...1]。下标语法可用作元素赋值,但不可用于添加或插入新元素。
添加元素使用 append 方法。还可通过 += 添加另一个数组,这涉及到了运算符重载的概念(操作符两端须为同一类型,也即需数组类型,而非元素类型)。
其它常用方法还有 insert, removeAtIndex, reverse 等。

遍历数组可使用 for-in 语法,或者通过 enumerate 全局函数获取带下标及值的元组:
for (index, value) in enumerate(array) {
...
}

字典类型以 Dictionary 表示,字典的定义与使用与数组类似:
定义字典:Dictionary<Key, Value>或[Key:Value]
使用下标语法访问。
由于字典里某个键值不一定有对应的值,因此总是返回 Optional 类型。

集合类型以 Set 表示,一组相同元素类型的无序值集合,与数组类似。
集合并没有简写语法,定义集合:
var s : Set<Type> = [value1, value2, value3]

元组

元组是由多个值组成的复合值,其成员可以是不同类型。元组的引入,使一小组相关数据的传递变得十分方便。元组非常适合函数需要返回多个值的情况,而这在其它语言里需要构造新的对象来实现。

元组的定义语法为 ( Type1, Type2, Type3 ),如
let aTuple = (1, “Yes”)
默认情况下,元组成员的访问以从0开始的下标方式,如 aTuple.0 取出 1,aTuple.1 取出 ”Yes”。可以为元组定义成员描述,如:
let aTuple = (aNumber:1, aString:”Yes”)
此时可由 aTuple.aNumber, aTuple.aString 访问指定成员。

~ 待续 ~

时间: 2024-10-04 07:18:58

Swift 简明参考的相关文章

正则表达式简明参考

正则表达式简明参考 2014-09-11 前言 我想在网上最出名的正则相关的一篇文章就是<正则表达式30分钟入门教程>了,说实话这篇文章确实是我的正则入门,但是随着使用熟练,冗长的文章已经不能满足我了,在此做个归纳总结,用于快速查阅. 以下语法在Java中有效,大部分应该是通用的. 元字符 元字符,又叫字符集,就是用一些特殊符号表示特定种类的字符或位置. 匹配字符 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 匹配位置 \b 匹配单

swift错误和异常处理 --- 南峰子

异常 (exception) 和错误 (error). 在 Objective-C 开发中,异常往往是由程序员的错误导致的 app 无法继续运行,比如我们向一个无法响应某个消息的NSObject 对象发送了这个消息,会得到 NSInvalidArgumentException 的异常,并告诉我们 "unrecognized selector sent to instance":比如我们使用一个超过数组元素数量的下标来试图访问 NSArray 的元素时,会得到NSRangeExcepti

从C#到Swift,Swift学习笔记

最近在学习IOS,我一直使用的是C#来开发,对Java .C.C++也有一定的了解.最近入手了一台Air,想试着学习IOS开发. 如果你不是C#和Java阵营的,如果你对Swift没有兴趣,就不用往下看了,真的! 一开始我的目标很明确,那就是学习OC,应为此语言经过多年的广泛应用,网上源代码很多,而且遇到的问题在百度和Google里也能很容易的找到资料,所以我一开始是奔着OC去的,但是几天的视频看下来,发现这OC语法只能用奇葩二字来形容,也许是我用惯了C#和Java的语法,也许是我个人的问题,反

学习苹果Swift语言的一些在线资源(2014年9月10日更新)

Swift是苹果为OS X和iOS平台引入的一种新的程序设计语言,这种程序设计语言已经激发了开发者社区的大量关注.仅仅几天之内,在Stack Overflow网站上提出的关于Swift的问题已经有500多个,在GitHub上搜索用Swift编写的库,数量已多达约350个. 对有兴趣学习这门语言的开发者,网络上提供了许多有用的入门资源: Swift程序设计语言 在iTunes里,苹果已经提供了免费的电子书<Swift语言参考手册>.访问iTunes需要使用苹果的设备,对于没有苹果设备的人来说,也

学习swift语言的快速入门教程推荐

随着苹果产品越来越火爆,苹果新推出的swift必定将在很大程度上代替oc语言.学好swift语言,对于IOS工程师来讲,已经是一门必备技能. 有一些比较好的英文版教程,值得学习. 1. Swift Tutorial for Beginners 在这个教程里,你可以学习一些iOS代码编写的新方法. 2. The Swift Programming Language 英文 中文 这是苹果官方出的iOS应用编程语言Swift的说明文档,中文版本很快就已经推出了.应该说还么有那个语音的中文文档翻译速度和

15个快速学习苹果Swift编程语言的入门教程

要说今年最火的编程语言是什么.那就非Swift莫属了.当然最主要还是市场炒的比较热,加上官方Swift教程<The Swift Programming Language>在北航的大三学生发起在github上进行协同翻译获得了很高的人气,短短几天时间内<Swift中文版>第一版就发布.这真是不火不行了. Swift是苹果公司在WWDC2014上发布的全新开发语言.从演示视频及随后在appstore上线的标准文档看来,语法内容混合了OC,JS,Python,语法简单,使用方便,并可与O

iOS开发——swift篇&amp;经典语法(二十一)泛型

泛型 泛型代码可以让你写出根据自我需求定义.适用于任何类型的,灵活且可重用的函数和类型.它的可以让你避免重复的代码,用一种清晰和抽象的方式来表达代码的意图. 泛型是 Swift 强大特征中的其中一个,许多 Swift 标准库是通过泛型代码构建出来的.事实上,泛型的使用贯穿了整本语言手册,只是你没有发现而已.例如,Swift 的数组和字典类型都是泛型集.你可以创建一个Int数组,也可创建一个String数组,或者甚至于可以是任何其他 Swift 的类型数据数组.同样的,你也可以创建存储任何指定类型

IOS开发语言Swift入门连载---泛型

IOS开发语言Swift入门连载-泛型 泛型代码可以让你写出根据自我需求定义.适用于任何类型的,灵活且可重用的函数和类型.它的可以让你避免重复的代码,用一种清晰和抽象的方式来表达代码的意图. 泛型是 Swift 强大特征中的其中一个,许多 Swift 标准库是通过泛型代码构建出来的.事实上,泛型的使用贯穿了整本语言手册,只是你没有发现而已.例如,Swift 的数组和字典类型都是泛型集.你可以创建一个Int 数组,也可创建一个String 数组,或者甚至于可以是任何其他 Swift 的类型数据数组

免费的编程中文书籍索引

免费的编程中文书籍索引,欢迎投稿. 国外程序员在 stackoverflow 推荐的程序员必读书籍,中文版. stackoverflow 上的程序员应该阅读的非编程类书籍有哪些? 中文版 github 上的一个流行的编程书籍索引 中文版 感谢 @siberiawolf 使用 Bootstrap 开发了网页版,地址:http://siberiawolf.com/free_programming/index.html 参与交流 欢迎大家将珍藏已久的经典免费书籍共享出来,您可以: 使用 Issues