首先我们考察一下Swift究竟是一个什么样的变成语言。在2014年苹果的WWDC(世界开发者大会)上,Swift首次亮相。苹果号称Swift有3大特性:
- 安全(SAFE)
- 现代(MODERN)
- 强大(POWER)
安全特性中首先介绍的是变量和常量的类型安全:
例如在下面的代码中,Swift用关键字let声明常量,关键字var声明变量。
在声明时可以指定常量和变量的类型,也可以不指定类型,而是直接赋值。Swift会通过所赋值的类型自动将定义变量的类型。
如果声明时不进行赋值,那么每个类型的变量都有自己的默认值。
例如Double类型的变量,默认值是0。这点与Objective-C、C++和C语言不同,不对变量赋值的话,那么变量的默认值是一个随机数。如果不注意这点,则很容易由此导致Bug的产生。使用Swift语言则可以避免这种情况发生,所以说Swift是类型安全的。
另一个安全特性是在流程控制方面。例如下面代码中switch语句有2个case语句。分别代表legCount为0和为1至13奇数的情况。然而显然除了这两种情况之外,legCount还可能是其他的值,比如:2或15等等。
Swift的语法规定,如果case语句不能覆盖所有可能的情况,则必须加default语句来处理其他情况。否则编译不能通过。
这样可以避免由于程序员疏忽,流程没有被switch-case经过处理,而引起的逻辑错误。
我们可以看到Swift中的安全特性确实有助于新手减少Bug和逻辑错误。但是类似于“变量声明时就有初始值”的特性在JavaScript,C#等多种现代语言中早已实现了。
在功能强大方面,有一个特性中是对字符串操作的简化,在下面的代码中,Swfit可以用\(a)的形式,代替C语言中对字符串format操作。大大简化了代码,增加了程序的可读性。
无独有偶,在WWDC2015中,苹果在新版的Safari和WebKit中增加了一个针对JavaScript的新特性。这个特性可以使用${变量}的符号,代替传统的使用“+”对字符串进行拼接的操作。
在项目实践中,类似的字符串拼接应用较多的是日志操作。一般都已经封装成为组件了。所以,虽然这种语法可以简化代码,但对于工程的影响不大。
另一个与功能强大相关的特性是对Unicode的支持。
例如下面的代码中可以直接使用苹果的emoji图标写程序。每一个小老鼠的图标可以作为一个字符(character)处理。
网上还有网友利用Swift的这个特性写了一个诺亚方舟的故事。