苹果新的编程语言 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
=10var currentLoginAttempt
=对于上面的对maximumNumberOfLoginAttempts常量和currentLoginAttempt变量的声明,Swift能够推断其为Int类型。
let pi = 3.14159
上面语句Swift推断你想创建一个Double类型的常量。Swift总是推断一个浮点数的类型为Double。
如变量或常量在声明时没有提供初始值,使Swift编译器不能推断其类型,就需要明确的为其指定类型。如下所示,声明一个字符串类型的变量。
var welcomeMessage: String
因此Swift还是一门语义更加安全、更加清晰的语言。
苹果新的编程语言 Swift 语言进阶(一)--综述的更多相关文章
- 苹果新的编程语言 Swift 语言进阶(三)--基本运算和扩展运算
一 基本操作运算 1. 赋值操作 在Swift 中,能够使用赋值操作为一个常量或一个变量赋值,也能够使用多元组一次为多个常量或变量赋值. Swift 的赋值操作与其他语言最大的不同是赋值操作除了可以为 ...
- 苹果新的编程语言 Swift 语言进阶(十五)--协议
协议定义了适合某个特定任务或功能需要的方法.属性和其它需求的一个蓝图.协议本身不提供这些需求的实现,它只是描述了一个任务或功能实现的蓝图. 协议与java 语言中的接口定义类似,都是描述了一个实现可以 ...
- 苹果新的编程语言 Swift 语言进阶(十四)--扩展
扩展是为一个已经存在的类.结构.枚举类型添加新功能的一种方式,包括为不能存取源代码的那些已经存在的类型添加功能. 扩展类似于Objective-C语言中的类别,与类别不同的是Swift语言的扩展没有名 ...
- 苹果新的编程语言 Swift 语言进阶(七)--枚举、结构、类
Swift语言中,具有类特征的类型包括三种,即枚举类型.结构类型(包括基本类型,基本类型实际都是结构类型的特例).类.其中枚举类型.结构类型是属于值类型,类属于引用类型.三种类型都可以添加属性.方法. ...
- 苹果新的编程语言 Swift 语言进阶(四)--字符串和收集类型
一.字符串( String )和字符类型(Character) 字符串是一种字符的带次序的收集类型(相当于数组),字符是字符串中的元素. 在Swift 语言中,字符串是编码独立的Unicode字符的 ...
- 苹果新的编程语言 Swift 语言进阶(二)--基本数据类型
一 . 常量和变量 Swift语言 对常量和变量的声明进行了明确的区分 Swift语言的常量类型比C 语言的constants类型更加强大,语义更加明确. 常量和变量的区别是常量在设置或初始化后 ...
- 苹果新的编程语言 Swift 语言进阶(五)--控制流
Swift 语言支持C语言全部的控制语句.包含for 和while循环语句,if和switch条件语句,以及break和continue控制语句等. Swift 语言除了支持以上语句,还添加了一个f ...
- 苹果新的编程语言 Swift 语言进阶(十六)--泛型
泛型允许你定义一个宽松.可重用的函数或者类型,使用泛型能够避免代码的重复,也能以更清楚和抽象的方式来表达程序的意图. 泛型是Swift语言提供的强大功能之一,Swift提供的许多标准库都使用了泛型来创 ...
- 苹果新的编程语言 Swift 语言进阶(十一)--实例的初始化与类的析构
一 .实例的初始化 实例的初始化是准备一个类.结构或枚举的实例以便使用的过程.初始化包括设置一个实例的每一个存储属性为一个初始值,以及执行任何其它新的实例能够使用之前需要的设置或初始 ...
随机推荐
- 磁盘管理,磁盘挂在mount,挂载光盘镜像文件,挂在U盘,umount 卸载命令, dd
1 mount 命令格式: mount[-t vfstype] -o options device dir 其中: *-t vfstype 指定文件系统的类型,通常不必指定.mount会自动选择正确的 ...
- 安卓如何快速更新SDK
打开SDK Manager,点击tools->options打开,如图: Proxy Setting如下设置: HTTP Proxy server:mirrors.neusoft.edu.cn ...
- Struts 2 之校验器
对于输入校验,Struts2提供了两种方式,1.使用validate方法:2.基于XML配置实现 . validate()方法 支持校验的Action必须实现Validateable接口,一般直接继承 ...
- CSDN帐号被封
感慨
- 安卓自定义View实现钟表
转载请注明出处:http://blog.csdn.net/baiyuliang2013/article/details/45535227 之前实现过html5版的钟表,html5也有一个画板属性Can ...
- Hibernate系列学习之(二) 多对一、一对一、一对多、多对多的配置方法
这是近期做案件录入.java项目中体会的几点:项目理解很是深刻,和大家共勉! hihernate一对多关联映射(单向Classes----->Student) 一对多关联映射利用了多对一关联映射 ...
- Dynamics CRM2011 在Visual Studio中开启Javascript的Xrm.Page智能提示
前面一篇博文:http://blog.csdn.net/vic0228/article/details/49512699 讲到了在Visual Studio中开启xml编辑的智能提示,本篇接着来讲下如 ...
- JavaScript介绍-javaScript学习之旅(一)
javaScript简介 1.javaScript是互联网上最流行的脚本语言,这门可用于web和html,更可广泛用于服务器端,pc端,移动端. 2.javaScript脚本语言: javaScrip ...
- Java基础---Java---基础加强---内省的简单运用、注解的定义与反射调用、 自定义注解及其应用、泛型及泛型的高级应用、泛型集合的综合
内省的简单运用: JavaBean是一种特殊的Java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则. 采用遍历BeanInfo的所有属性方式来查找和 ...
- Android进阶(六)文件读操作
Android中文件的读写操作与Java中文件的读写操作是有区别的.在Java中,读文件操作如以下代码所示: public class FileRead { private static final ...