苹果新的编程语言 Swift 语言进阶(一)--综述
Swift 是苹果开发和提供的供开发IOS 和OS X应用的一门新的语言。Swift语言基于C 和Objective-C语言,除了提供C 和Objective-C语言具有的所有语法功能外,为了编程方便和高效,Swift在语法上作了大量的优化和改进。
Swift采用安全编程模式,具有许多先进的强大的功能 ,如动态运行时、编译动态进行类型检查、Closures、下标功能、自动引用计数、选项类型、通用类型和类型编译时推断、类型的扩展和嵌套、协议类型、功能和类型的通用化、操作符的定制和添加。
Swift语言的设计思想是:语言和编译器承担不同的职责,语言本身承担程序语义的呈现,为程序编写服务,为提高编程效率进行了最大程度的优化;而编译器承担语言的理解和编译职责,对程序的执行效率和性能进行最大程度的优化。
因此Swift语言在设计时在保持语义可理解的基础上为了提供编程效率在语法上做了最大程度的优化,使语言本身更加干净和简洁,功能更加强大、更富有表现力,并不失灵活性,如实现了语言语法上的面向对象和过程化部分的有机统一、去除了c 语言的语法上的诸多限制等。
Swift语言通过语言和编译器两方面的优化使 采用Swift 语言进行编程更加容易、编程效率更高,同时程序的 执行效率和安全又得到保证。
一、Swift语言的简洁性、灵活性
Swift语言为了保持语言的简洁在语法的各个方面(包括程序结构、关键字等)进行了优化,在不失理解性的基础上去除了冗余的语法,能够交给编译器的工作尽量交给编译器处理。
如 每个语言实现的第一个程序,打印一条"Hello, world”。
Swift语言为了实现上述功能只是下面的一条语句。
println("Hello, world”)
该语句在Swift语言中就是一个完整的程序 ,不需要输入另外的分离的库和头文件,也没有通常语言都有的main 函数声明,就连语句最后的分号也省略了。
Swift语言也没有C语言通常的头文件,所有的实现和声明都在一个后缀为.swift的文件中,这也是为了提高编程效率的需要,不需要用户维护两个文件。对于其它代码需要的某个类的接口可以自动获得和使用。
Swift语言对关键字的命名在不失准确性的基础上也是尽量的简化,如整数类型为Int,而不是Integer,布尔类型是Bool而不是Boolean等。
Swift语言对循环语句添加了for-in形式,使其更加容易地对数组、词典、范围、字符串和其它序列进行遍历。
为了语言的干净,包围条件和循环变量的圆括号也被省略了。
如:
for (kind,numbers) in interestingNumbers {
for number in numbers {
if number >largest {
largest =number
}
}
}
对于Switch控制结构也作了语法的简化,为了语法的简洁和更少的的出错,在每个对应Switch的case的执行代码执行完后,程序自动退出switch语句,不再继续执行下面的case 语句,因此不需要在每个case对应的执行代码后添加一个冗余的break语句。而其它语言如C语言需要在每个case 语句后面添加多余的break语句,用户也经常会忘记添加这个多余的break语句,因此造成程序逻辑出错。
Swift语言虽然在语法上进行了去冗余化工作,但在语法功能上却没有精简,反而大大增强了功能,除了支持C语言和Objective-C语言的几乎所有功能外,还添加和增强了许多功能,如下标功能、元组类型、选项类型、类型的扩展和嵌套、功能和类型的通用化、操作符的定制和添加等许多功能。
另外Swift语言更加灵活,相对c 语言或其它语言具有更少的语法限制。如
Swift语言的注释像c 语言一样支持以//开始的单行注释,也支持/* */形式的多行注释。但没有了c 语言对多行注释不能嵌套的限制,Swift 的多行注释支持嵌套。如下所示 :
/* this is the start of the first multiline comment
/* this is the second, nested multiline comment */
this is the end of the first multiline comment */
Swift还支持使用println功能或print直接打印一个变量或常量的值,或者插入一个字符串类型中进行输出。。
var friendlyWelcome =“Hello!"
println(friendlyWelcome)
或
println("The current value of friendlyWelcome is\(friendlyWelcome)”)。
总之,Swift语言在语法语句上虽然与C语言相似,但在语法的许多方面作了许多精简和增强,可以说Swift语言是C语言的精简化、Objective-C语言的功能增强化,并且具有脚本语言的表达化等特点,因此Swift语言是一门语法更自然,表达更丰富的语言。
二、Swift语言的安全性和语义清晰性
Swift是一门类型安全的语言,即在编译阶段必须进行类型检查明确使用到的每个变量或常量的类型。类型安全的语言可以在开发编译阶段更好的发现和修改类型使用上的错误,可以开发一个更加安全可靠的程序。
Swift在编译代码时进行类型检查,但不意味着必须为每一个声明的常量或变量规定类型。
Swift编译器提供了类型推断机制--编译代码时,通过简单检查你提供的表达式的值自动推断表达式的类型。
由于Swift使用类型推断,Swift可以提供比其它语言更简洁的类型声明语法,虽然语法简洁,但类型仍然能够在编译阶段被明确确定。Swift的编译器推断类型功能在Swift语言要求的类型安全与语法的简洁上做到了最好的统一。
如当你使用一个初始值来声明一个常量或变量时,Swift编译器能够自动根据变量或常量的初始值来推断变量或常量的类型。
let maximumNumberOfLoginAttempts =10
var currentLoginAttempt =0
对于上面的对maximumNumberOfLoginAttempts常量和currentLoginAttempt变量的声明,Swift能够推断其为Int类型。
let pi = 3.14159
上面语句Swift推断你想创建一个Double类型的常量。Swift总是推断一个浮点数的类型为Double。
如变量或常量在声明时没有提供初始值,使Swift编译器不能推断其类型,就需要明确的为其指定类型。如下所示,声明一个字符串类型的变量。
var welcomeMessage: String
因此Swift还是一门语义更加安全、更加清晰的语言。