Swift是Apple于2014年WWDC(苹果开发者大会)发布的全新开发语言,可与Objective-C共同运行于mac OS和iOS平台,用于搭建基于Apple平台的应用程序。
本章主要为您介绍了Swift 3.0的常量、变量、数据类型、运算符、循环语句、条件语句等一些基础的语法知识。
3.1Swift的基本概念
Swift是一种强劲而直观的编程语言,它由Apple创造,可用来为iOS、Mac、Apple TV 和 Apple Watch等设备和平台开发应用程序。Swift语言旨在为开发者提供充分的自由,所以它易用并且开源,只要有想法,谁都可以使用Swift创造非凡的作品。
Swift 将现代编程语言思想的精华,和苹果工程师文化的智慧结合了起来。编译器对性能进行了优化,编程语言对开发进行了优化,两者互不干扰,鱼与熊掌兼得。所以Swift具有快速而且高效的特点,它还是第一套和脚本语言具有同样表现力和趣味性的系统编程语言。
Swift的设计以安全为出发点,以避免各种常见的编程错误类别。Swift能够提供实时反馈,而且可以被无缝集成到现有的 Objective-C 代码中,因此开发者能够编写安全而可靠的代码,并在节省时间的同时,创造出非常丰富的 app 体验。
在苹果官网提供了一些使用Swift语言开发的知名App,如图3-1-1所示:
图 3-1-1(来自apple.com)
Swift语言非常契合2014年WWDC的slogan:Write the code,change the world。(写代码,改变世界)。Swift作为新的编程语言,它集中了很多其它高级语言的影子,集成了它们的很多优点。它和Javascript、Go、Ruby、Python等语言都有些神似,并且它的语法更加接近自然语言,使得编程的过程变得更加简单和有趣。这些变化进一步降低了苹果平台上App开发的门槛,延续苹果一贯主张的用App来解决一切问题,而这也是苹果生态链中重要的一个环节。
随Swift推出的新版集成开发环境Xcode已经完全支持使用Swift。Xcode所附带的在线文档中也在原有的Objective-C内容的旁边放上了Swift的说明,可见苹果是多么重视Swift语言的发展。这也正好印证了前面提到的,苹果在降低自己生态链中最总要一环的门槛,这会使得苹果自身的竞争力进一步加强。
虽然目前看来,Swift语言可能还不够完美,比如可以使用的第三方库还也较少。但是它的出现,代表着接近自然语言语法的编程方法正在快速的发展,从而使每个希望编写应用程序的人都可以很容易上手编码工作,并快速开发出质量高的应用程序。
3.1.1 Swift语言的特点
3.1.2 Swift常量和变量的定义
常量所指向的是一个特定类型的值,如数字8或者字符“Swift”。变量的值可以根据需要不断进行修改,而常量的值一经定义,是不能够被修改的。
常量和变量在使用前都需要定义 (声明),在Swift中定义常量和变量变得非常简单。您可以使用let关键词定义一个常量,使用var关键词定义一个变量。
1 let pi =3.14159265 //常量
2 var enemyKilled = 100 //变量
在上面的代码中,首先定义了一个常量pi,表示圆周率,因为圆周率是固定不变的,所以将其定义为常量。接着又定义了一个变量enemyKilled,表示在游戏场景中消灭的敌人数量。因为玩家水平不同,消灭的敌人数量也不相同,所以这里定义为一个变量。您可以根据需要,修改变量的值。与变量不同的是,常量的值一旦确定就不能修改。如果想尝试改变一个常量的值,编译代码时就会报错。
您可以在同一行代码中,定义多个常量或变量,名称之间使用半角逗号分隔:
1 var length = 10, width =20, height = 30
您不需要为常量指定数据类型,但是必须给常量指定一个值。编译器会根据常量的值,自动判断常量的类型。在上面的代码中,编译器会认为pi常量的数据类型为浮点类型,因为它的值是一个浮点数。一旦定义了一个常量或变量,您将不可以再改变它们的数据类型。
为了能够直观地显示常量或变量的数据类型,您也可以在定义常量或变量时通过冒号设置它们的数据类型:
1 var age : Int = 24 //为变量age设置整型的数据类型
这里定义了一个名为age的变量,它的类型为整型,值为24。Swift 提供了与Object-C的相似的基础数据类型,包含整数Int,浮点数Double、Float,布尔值 Bool 以及String 字符串。同时Swift也提供了两种强大的集合数据类型:数组Array和字典Dictionary。
Swift可以使用几乎任何字符来作为常量和变量名,包括Unicode字符。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。它也包含了各种文字编码,如中文、日文、韩文、英文等字符;甚至是聊天工具中使用的表情符号等。虽然常量或变量的名称都可以包含数字,但是名称的开头不能是数字:
1 let _count = 6 //正确的命名方式
2 let count = 8 //正确的命名方式
3 let Count = 8 //正确的命名方式,Swift命名是区分大小写的
4 let 猫 = “Cat” //正确的命名方式,中文字符可以作为常量或变量的名称
5 let = “Cat” //正确的命名方式
6 let default = 0 //错误的命名方式:default作为关键字不能被用作常量或变量的名称
7 let 8Count = 8 //错误的命名方式:数字不能放在名称的开头
8 let count# = 8; //错误的命名方式:名称中不能包含特殊字符
在定义常量时,通常使用大写的常量名称,这样代码将更加具有识别性:
1 let PI= 3.14159265
在定义变量时,为了统一项目的编码风格,您可以采用驼峰命名法,或者使用下划线风格:
1 varenemyKilledNumber = 100 //驼峰风格命名法
2 varenemy_killed_number = 100 //下划线风格命名法
3.1.3常量和变量的输出
Swift使用print全局函数来输出变量或者常量。除了使用print函数,您还可以使用debugPrint、dump函数来输出常量和变量的值。Swift原来提供的println函数,已经被更名为print函数,所有print函数拥有了和println函数相同的功能,即输出变量或常量的值之后,再输出一个换行:
1 var str ="Hello, Swift"
2
3 print(str) //输出内容为:Hello, Swift
4 debugPrint(str) //输出内容为:" Hello, Swift"
5 dump(str) //输出内容为:- Hello, Swift
在第3行至第5行之间的所有代码,都可以输出Hello,Swift
内容。
在print语句中使用小括号,可以同时输出多个常量或变量的值,在小括号的左侧需要添加反向斜线\。
1 let name = "王丰"
2 let age ="24"
3 print("我的名字是\(name),今年\(age)岁了。")
第3行语句的输出结果为:
我的名字是王丰,今年24岁了。
您也可以使用+号,进行输出语句的拼接,将第三行的代码替换为:
1 print("我的名字是"+name+",今年"+age+"岁了。")
输出的结果同样是:
我的名字是王丰,今年24岁了。