Swift语言快速入门
  • 推荐0
  • 收藏1
  • 浏览742

Swift语言快速入门

张腾飞 (作者) 

  • 书  号:978-7-121-24328-8
  • 出版日期:2014-10-08
  • 页  数:432
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:刘佳禾
本书以苹果官方Swift英文文档为基础,以其大纲为主线,从易到难全面阐述了Swift语言的语言基础、基本运算、字符串操作、集合类型、流程控制、函数与闭包、面向对象、高级运算符操作及语法参考等方方面面。此外,本书内容及API已与苹果官方英文文档同步更新,减少了初学者学习旧版语言文档却不能正常编译代码的困惑。




今年WWDC,苹果公司发布了新的编程语言Swift用来取代Objective-C,所以Swift语言是未来苹果平台开发的主流语言,必将取代Objective-C语言,是所有iOS开发者及想人事iOS开发的人员的必学语言。但目前市场上还没有相关图书,该书可以满足读者需求。
Swift体会
极客学院首席讲师 陈劭家(ime)

我不算是一个果粉,但是我很喜欢苹果的产品,甚至可以说是狂热。2014年6月2日晚上我一夜未眠,就是在等苹果的WWDC,这是开发者的狂欢之夜(或者狂欢之日,因为美国时间是白天)。凌晨1点,终于开始了,但是苹果一次又一次的新产品展示让我一次又一次的失望,作为开发者的我表示无感。
我坚持看因为我不相信苹果总是让我失望。最终在WWDC的最后一个环节,我真心沸腾了,因为一门新的编程语言——Swift出现了。要知道在饱受了Objective-C语言之苦后看见Swift是一种什么心情,你不需要再为引用计数而头疼,不需要再为没有命名空间而不得不添加该死的前缀而烦恼,不需要再为Objective-C那难懂的语法而整天晕乎乎的。此外,苹果还为我们提供了Playground这个工具,它能够在我们写程序时实时计算出变量的值,甚至还能呈现数字变量的趋势图,让编程富有乐趣及创造性。
由于Swift出现得晚,所以它拥有了目前世界上几乎所有编程语言的优点,而没有目前所有编程语言的缺点,Swift真的太漂亮了。下面我们开始一步一步认识它。
运行速度
从苹果官方给出的数据来看,Objective-C比Python快2.8倍,而Swift比Python快3.9倍,可见苹果在Swift上下了大量的工夫进行优化。
开发环境
Swift语言的开发环境是苹果公司提供的集成开发环境Xcode,可以用来开发iOS应用、iOS游戏、OS X窗体程序、OS X游戏、OS X命令行程序,读者可以直接从App Store中搜索并下载。用Swift语言可以做到几乎所有Objective-C所能做到的事情,所以Swift必将取代Objective-C,如果你还没有学过Objective-C语言,那么恭喜你,不用学了,直接学习Swift即可。
运行环境
Swift被强大的llvm编译成机器码,直接运行在系统中。由于Swift是苹果的产品,所以目前只支持苹果的系统(OS X和iOS)。我们期待会有社区开发出跨平台的Swift语言,因为这么好的一门编程语言,应该能够让世界上的每一个人享受到才好,就像mono让C#语言跨平台一样。
语言特性
具有所有现代编程语言的特性,包括:面向对象、类扩展、命名空间、闭包、泛型、强类型、函数有多个返回值等。
这些特性能够大大提高程序员的开发效率,从而为企业节约成本,同时让编程工作充满乐趣。
语法简介
通过前文的介绍,相信读者已经迫不及待地想尝试使用Swift了,下面我们就来认识一下Swift的语法。
简洁的语法
Swift抛弃了Objective-C那种古板难懂的语法,采用通俗易懂的脚本语言类语法,学过Python、JavaScript或者Lua语言的读者肯定不会陌生,这大大降低了初学者的学习成本。
变量及常量
如果要定义一个变量i等于1,只需要写var i = 1,可以看出,不需要指定类型,因为Swift会自动做类型推断。
如果要定义一个常量PI等于3.14,只需要写let PI = 3.14,常量只能被赋值一次。
输出语句
在Swift中,可以直接使用println函数来输出一段任意类型的信息,如下所示:
println("Hello Swift")
字符串连接
Swift语言中的字符串连接同样也非常简单,如果两个值都是字符串,则可直接用加号连接,如下所示:
var hello = "Hello"
var world = "World"
var str = hello + world

如果将要连接的值中有其他类型,则直接使用()包括就可进行连接,如下所示:
var hello = "Hello"
var num = 100
var str = "(hello) (num)"

从上面的示例可以看出,相比Objective-C或者C/C++语言来说,简单太多了。
循环
传统的C语言中的for循环是这么写的:
for (int i = 0; i < 100; i++) {
//TODO
}

在Swift中,将循环大大简化了,如下所示:
for i in 0..<100{
//TODO
}

具体内容还有很多,详见本书正文。
条件判断
条件判断与C语言并没有区别,可以直接书写C语言的语法即可通过,如下所示:
if (count>5) {
//TODO
}

在Swift中还可以再简洁一些,如下:
if count>5 {
//TODO
}

另外,在Swift语言中,switch…case语句可以不用加break关键字。
函数
如果要定义一个函数用来输出一段信息,则代码如下所示:
func sayHello(){
println("Hello Swift")
}

这种写法非常简洁,我曾在Dart语言中见过这种写法,func是一个关键字,用来指明所定义的是一个函数,sayHello是函数名称,()中是该函数的传入参数。如果还想使用传入参数及返回值,如下所示:
func max(a:Int,b:Int)->Int{
if a>b {
return a
}else{
return b
}
}

该函数名称为max,可传入两个参数,都是整数类型,参数名称分别为a、b,函数的返回值也是整数类型。
Swift中的函数还可以同时返回多个值,如下所示:
func getNum()->(Int,Int){
return (3,4)
}

如果想对该函数进行调用并获取到这两个返回结果值,则用法如下:
let (a,b) = getNum()
面向对象
类的定义非常简单,如下所示:
class Hello{
func sayHello(){
println("Hello Swift")
}
}

该示例定义了一个名为Hello的类,其有一个成员函数名为sayHello,如果想调用该类及相应函数,则用法如下:
var h = Hello()
h.sayHello()

类的继承的写法也非常简单,这一点继承了C++语言的优秀传统,如果想定义一个名为Hi的类继承自Hello,则写法如下:
class Hi:Hello{
}

如果后期还想为某类添加功能,有两种方法。第一种是直接修改类的源码添加功能,第二种是为该类写扩展功能,下面我们来着重介绍第二种。如果想为Hello类再添加一个名为sayHi的方法,则代码如下所示:
extension Hello{
func sayHi(){
println("Hi Swift")
}
}

其中,extension关键字表示要扩展已经存在的类的功能,如果想扩展系统或者第三方的某个类的功能而得不到其源码时,采用这种方式将会是一个绝佳的选择。如下所示:
extension String{
func printSelf(){
println(self)
}
}
var str = "Hello Swift"
str.printSelf()

通过这种方式扩展了系统的String类,为其增加了一个printSelf方法,在使用时可直接调用目标对象的printSelf()方法,非常方便。
关于面向对象的更多特性,请看本书正文。
其实extension还有另一个用途,那就是模拟命名空间,请看下一个主题。
命名空间
在Swift语言中并没有专门的命名空间的关键字,但是可以模拟命名空间这个面向对象的特性,如下所示:
//定义命名空间ime
class ime{
}

//在ime命名空间下定义Hello类
extension ime{
class Hello{
func sayHello(){
println("Hello Swift")
}
}
}

使用该类及相关方法的代码如下所示:
var h = ime.Hello()
h.sayHello()

有没有让你眼前一亮的感觉呢?
结尾
就写到这里吧,想必大家已经对Swift有了一个初步的了解,而且迫不及待地想开始学习了,努力吧,少年,你就是未来的太阳!

目录

目录 阅读
第1章 马斯堡游记
第2章 Swift初见
第3章 语法入门
第4章 初级语法
第5章 高级语法
第6章 词法参考
第7章 使用Cocoa框架与ObjC

读者评论

下载资源

电子书版本

  • PDF

相关图书

写给大忙人的现代JavaScript

(德国)HORSTMANN, CAY S. (作者) 浙江阿里巴巴聚橙技术发展有限公司 (译者)

本书是一本简明的现代 JavaScript 教程,不仅涵盖函数式编程、JS 语法、JS 库等基础性内容,还介绍了国际化、异步编程、标准模块系统、元编程等较为复杂...

¥109.00

基于Bert模型的自然语言处理实战

李金洪 (作者)

2018年底谷歌公司AI团队新发布的BERT模型,在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩:全部两个衡量指标上全面超越人类,并且还在11种不...

¥139.00

Flutter企业级应用开发实战

郭歆伊 (作者)

本书是一本可供国内企业参考落地的Flutter技术图书。闲鱼技术团队在实际的技术落地过程中,既享受了Flutter研发效能带来的红利,也经历了无数的技术挑战。本...

¥89.00

JavaScript 二十年

王译锋 (作者)

本书主要讲述了从 1995 年到 2015 年这20年间,JavaScript在创建、设计和演变方面所经历的过程。全书分为4个部分,每个部分都涵盖了 JavaS...

¥79.00

数据分析实用教程

刘政 罗应婷 姚新军 (作者)

本书共 14 章,内容涵盖:统计学的基本概念、推断性统计的相关理论和实例、方差分析、相关分析与回归分析、Logistic 回归、主成分分析与因子分析、聚类分析、...

¥99.00

Python编程与3D物理学仿真(视频版)

张继春 (作者)

本书将Python编程和物理力学知识同步结合起来,通过编程将物理概念和物理过程进行3D可视化展 现,帮助读者在3D场景下加深对物理知识的理解和掌握,从而培养读者...

¥89.90