文章目录
前言
该部分以及后续章节的学习内容,是我依照官方文档(Swift5.1版本)学习后的心得体会,其中有不少与官方文档重叠的内容,也有我自己进行改动和精简的部分。该专栏的目的是为了向广大Swift爱好者提供一个接触入门的途径,也是给我自己提供一个小型知识库,方便开发过程中的技术查询。由于本人知识储备的局限性,文中难免出现错误或偏差,希望大家可以理解并帮助我改正问题。非常感谢!
有兴趣的童鞋可以多学习一下官方文档及相关学习资源:
The Swift Programming Language
The Swift Programming Language In Chinese
Swift Development Resources
Start Developing iOS Apps
Using Swift with Cocoa and Objective-C(中文版 by @CocoChnia)
@Swift 学习指引
谨记:一定要坚持学习,并锻炼自己独立解决问题的能力!
Swift 是一门开发 iOS, macOS, watchOS 和 tvOS 应用的新语言。然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的。
Swift 包含了 C 和 Objective-C 上所有基础数据类型,Int 表示整型值; Double 和 Float 表示浮点型值; Bool 是布尔型值;String 是文本型数据。 Swift 还提供了三个基本的集合类型,Array、Set 和 Dictionary ,详见 集合类型。
就像 C 语言一样,Swift 使用变量来进行存储并通过变量名来关联值。在 Swift 中,广泛的使用着值不可变的变量,它们就是常量,而且比 C 语言的常量更强大。在 Swift 中,如果你要处理的值不需要改变,那使用常量可以让你的代码更加安全并且更清晰地表达你的意图。
除了我们熟悉的类型,Swift 还增加了 Objective-C 中没有的高阶数据类型比如元组(Tuple)。元组可以让你创建或者传递一组数据,比如作为函数的返回值时,你可以用一个元组可以返回多个值。
Swift 还增加了可选(Optional)类型,用于处理值缺失的情况。可选表示 “那儿有一个值,并且它等于 x ” 或者 “那儿没有值” 。可选有点像在 Objective-C 中使用 nil ,但是它可以用在任何类型上,不仅仅是类。可选类型比 Objective-C 中的 nil 指针更加安全也更具表现力,它是 Swift 许多强大特性的重要组成部分。
Swift 是一门类型安全的语言,这意味着 Swift 可以让你清楚地知道值的类型。如果你的代码需要一个 String ,类型安全会阻止你不小心传入一个 Int 。同样的,如果你的代码需要一个 String,类型安全会阻止你意外传入一个可选的 String 。类型安全可以帮助你在开发阶段尽早发现并修正错误。
常量和变量
常量和变量把一个名字(比如 welcomeMessage)和一个指定类型的值(比如字符串 “Hello” )关联起来。常量的值一旦设定就不能改变,而变量的值可以随意更改。
声名常量和变量
常量和变量必须在使用前声明,用 let 关键字 声明常量,用 var 关键字声明变量。
let maximumNumber = 10
var currentNumber = 0
可以在一行中声明多个常量或变量,用逗号隔开
var x = 0.0, y = 0.0, z = 0.0
注意:
如果代码中有不需要改变的值,请使用 let 关键字将它声明为常量。只将需要改变的值声明为变量。
类型标注
声明常量或变量的时候可以加上类型标注(type annotation),说明常量或变量中要存储的值的类型。如果要添加类型标注,需要在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。
var name: String = "Tom" // 变量 name 要存储的值的类型是 String 类型
var red, green, blue: Double // 在一行中定义多个同类型的变量
一般来说很少需要写类型标注,如果在声明常量或变量的时候赋了一个初值,Swift可以推断这个常量或变量的类型(类型安全和类型推断)。没有赋初值的话,通过类型标注可以指定常量或变量的类型。
常量和变量的命名
不能以数字开头、不能包含数学符号、箭头、保留的或非法的Unicode码位、连线与制表符;
不能重复声明相同名字的常量或变量,或改变其存储的值的类型,不能将常量与变量进行互转;
如果需要使用Swift保留关键字的名称作为常量或变量名,可以使用反引号 ` 将关键字包围。
let ?? = "dogcow"
name = "Jim"
输出常量和变量
使用print(:separator:terminator:)函数来输出当前常量或变量的值,print(:separator:terminator:) 是一个用来输出一个或多个值到适当输出区的全局函数。
print(name