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
=

对于上面的对maximumNumberOfLoginAttempts常量和currentLoginAttempt变量的声明,Swift能够推断其为Int类型。

let pi = 3.14159

上面语句Swift推断你想创建一个Double类型的常量。Swift总是推断一个浮点数的类型为Double。

如变量或常量在声明时没有提供初始值,使Swift编译器不能推断其类型,就需要明确的为其指定类型。如下所示,声明一个字符串类型的变量。

var  welcomeMessage: String

因此Swift还是一门语义更加安全、更加清晰的语言。

苹果新的编程语言 Swift 语言进阶(一)--综述的更多相关文章

  1. 苹果新的编程语言 Swift 语言进阶(三)--基本运算和扩展运算

    一 基本操作运算 1. 赋值操作 在Swift 中,能够使用赋值操作为一个常量或一个变量赋值,也能够使用多元组一次为多个常量或变量赋值. Swift 的赋值操作与其他语言最大的不同是赋值操作除了可以为 ...

  2. 苹果新的编程语言 Swift 语言进阶(十五)--协议

    协议定义了适合某个特定任务或功能需要的方法.属性和其它需求的一个蓝图.协议本身不提供这些需求的实现,它只是描述了一个任务或功能实现的蓝图. 协议与java 语言中的接口定义类似,都是描述了一个实现可以 ...

  3. 苹果新的编程语言 Swift 语言进阶(十四)--扩展

    扩展是为一个已经存在的类.结构.枚举类型添加新功能的一种方式,包括为不能存取源代码的那些已经存在的类型添加功能. 扩展类似于Objective-C语言中的类别,与类别不同的是Swift语言的扩展没有名 ...

  4. 苹果新的编程语言 Swift 语言进阶(七)--枚举、结构、类

    Swift语言中,具有类特征的类型包括三种,即枚举类型.结构类型(包括基本类型,基本类型实际都是结构类型的特例).类.其中枚举类型.结构类型是属于值类型,类属于引用类型.三种类型都可以添加属性.方法. ...

  5. 苹果新的编程语言 Swift 语言进阶(四)--字符串和收集类型

    一.字符串( String  )和字符类型(Character) 字符串是一种字符的带次序的收集类型(相当于数组),字符是字符串中的元素. 在Swift 语言中,字符串是编码独立的Unicode字符的 ...

  6. 苹果新的编程语言 Swift 语言进阶(二)--基本数据类型

    一  .   常量和变量 Swift语言 对常量和变量的声明进行了明确的区分 Swift语言的常量类型比C 语言的constants类型更加强大,语义更加明确. 常量和变量的区别是常量在设置或初始化后 ...

  7. 苹果新的编程语言 Swift 语言进阶(五)--控制流

    Swift 语言支持C语言全部的控制语句.包含for  和while循环语句,if和switch条件语句,以及break和continue控制语句等. Swift 语言除了支持以上语句,还添加了一个f ...

  8. 苹果新的编程语言 Swift 语言进阶(十六)--泛型

    泛型允许你定义一个宽松.可重用的函数或者类型,使用泛型能够避免代码的重复,也能以更清楚和抽象的方式来表达程序的意图. 泛型是Swift语言提供的强大功能之一,Swift提供的许多标准库都使用了泛型来创 ...

  9. 苹果新的编程语言 Swift 语言进阶(十一)--实例的初始化与类的析构

    一 .实例的初始化          实例的初始化是准备一个类.结构或枚举的实例以便使用的过程.初始化包括设置一个实例的每一个存储属性为一个初始值,以及执行任何其它新的实例能够使用之前需要的设置或初始 ...

随机推荐

  1. RxJava操作符(02-创建操作)

    转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51645348 本文出自:[openXu的博客] 目录: Create Defer Empty ...

  2. Apache Beam—透视Google统一流式计算的野心

    Google是最早实践大数据的公司,目前大数据繁荣的生态很大一部分都要归功于Google最早的几篇论文,这几篇论文早就了以Hadoop为开端的整个开源大数据生态,但是很可惜的是Google内部的这些系 ...

  3. x264源代码简单分析:编码器主干部分-2

    ===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...

  4. Java基本语法-----java二维数组

    由于word里的样式在csdn上调太麻烦了,所以我再次贴图了,后面二维数组那里是文字的,大家将就看吧. 二维数组常见的操作: 1.遍历二维数组 2.对二维数组求和 class Demo { // 定义 ...

  5. NewSQL数据库VoltDB特性简介

    VoltDB是一个革命性的新型数据库产品,被称作NewSQL数据库.它基于H-Store,号称比当前数据库产品的吞吐量高45倍,同时又具有很高的扩展性.它的特性主要有以下几点: Ø  高吞吐.低延迟: ...

  6. Servlet之Session处理

    HttpSession 对象中可用的几个重要的方法: 1    public Object getAttribute(String name) 该方法返回在该 session 会话中具有指定名称的对象 ...

  7. UNIX网络编程——Socket/TCP粘包、多包和少包, 断包

    为什么TCP 会粘包 前几天,调试mina的TCP通信, 第一个协议包解析正常,第二个数据包不完整.为什么会这样吗,我们用mina这样通信框架,还会出现这种问题? TCP(transport cont ...

  8. shell的date日期循环方法:日期格式转时间戳计算,再将时间戳转回日期格式

    1,日期对象转时间戳current_day 2,计算增量的时间戳,即循环每步的增量one_day 3,循环体计算,日期变量加增量后重新赋值自己 4,时间戳转回日期格式后输出 current_day=2 ...

  9. 使用TT模板+mvc+wcf实现简单查询

    今天是除夕,小编的这篇博客是掐着点儿发的,在此,祝各位小伙伴新年快乐,身体健康,万事如意:喜从天降,欣喜若狂:喜气盈门,好事成双:好人好运,金玉满堂:神采飞扬,如愿以偿,财源滚滚来,福如东海长:伴随着 ...

  10. HDU2612---(两次BFS)

    Description Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Nin ...