没有合适的资源?快使用搜索试试~ 我知道了~
首页Swift 程序设计语言 中文版
Swift程序设计语言中文版 资料来源于网上收集整理。 目录 1 欢迎使用Swift 1.1 关于 Swift 1.2 Swift 初见 2 Swift 教程 2.1 基础部分 2.2 基本运算符 2.3 字符串和字符 2.4 集合类型 2.5 控制流 2.6 函数 2.7 闭包 2.8 枚举 2.9 类和结构体 2.10 属性 2.11 方法 2.12 附属脚本 2.13 继承 2.14 构造过程 2.15 析构过程 2.16 自动引用计数 2.17 可选链 2.18 类型检查 2.19 类型嵌套 2.20 扩展 2.21 协议 2.22 泛型 2.23 高级操作符 3 语言参考 3.1 关于语言参考 3.2 词法结构 3.3 类型 3.4 表达式 3.5 语句 3.6 声明 3.7 特性 3.8 模式 3.9 泛型参数 3.10 语法总结
资源详情
资源评论
资源推荐

目录
1 欢迎使用 Swift
1.1 关于 Swift
1.2 Swift 初见
2 Swift 教程
2.1 基础部分
2.2 基本运算符
2.3 字符串和字符
2.4 集合类型
2.5 控制流
2.6 函数
2.7 闭包
2.8 枚举
2.9 类和结构体
2.10 属性
2.11 方法
2.12 附属脚本
2.13 继承
2.14 构造过程
2.15 析构过程
2.16 自动引用计数
2.17 可选链
2.18 类型检查
2.19 类型嵌套
2.20 扩展
2.21 协议
2.22 泛型
2.23 高级操作符
3 语言参考
3.1 关于语言参考
3.2 词法结构
3.3 类型
3.4 表达式
3.5 语句
3.6 声明
3.7 特性
3.8 模式
3.9 泛型参数
3.10 语法总结

1.1 关于 Swift
Swift 是一种新的编程语言,用于编写 iOS 和 OS X 应用。Swift 结合了 C 和
Objective-C 的优点并且不受 C 兼容性的限制。Swift 采用安全的编程模式并添加了很
多新特性,这将使编程更简单,更灵活,也更有趣。Swift 是基于成熟而且倍受喜爱的
Cocoa 和 Cocoa Touch 框架,他的降临将重新定义软件开发。
Swift 的开发从很久之前就开始了。为了给 Swift 打好基础,苹果公司改进了编译器,
调 试 器 和 框 架结 构 。 我 们 使 用 自 动 引 用 计 数 ( Automatic Reference Counting,
ARC)来简化内存管理。我们在 Foundation 和 Cocoa 的基础上构建框架栈并将其标
准化。Objective-C 本身支持块、集合语法和模块,所以框架可以轻松支持现代编程语
言技术。正是得益于这些基础工作,我们现在才能发布这样一个用于未来苹果软件开发的
新语言。
Objective-C 开发者对 Swift 并不会感到陌生。它采用了 Objective-C 的命名参数以及
动态对象模型,可以无缝对接到现有的 Cocoa 框架,并且可以兼容 Objective-C 代码。
在此基础之上,Swift 还有许多新特性并且支持过程式编程和面向对象编程。
Swift 对于初学者来说也很友好。它是第一个既满足工业标准又像脚本语言一样充满表现
力和趣味的编程语言。它支持代码预览,这个革命性的特性可以允许程序员在不编译和运
行应用程序的前提下运行 Swift 代码并实时查看结果。
Swift 将现代编程语言的精华和苹果工程师文化的智慧结合了起来。编译器对性能进行了
优化,编程语言对开发进行了优化,两者互不干扰,鱼与熊掌兼得。Swift 既可以用于开
发 “hello, world” 这样的小程序,也可以用于开发一套完整的操作系统。所有的这些特
性让 Swift 对于开发者和苹果来说都是一项值得的投资。
用 Swift 编写 iOS 和 OS X 应用将是一场美妙的体验,Swift 之后也会不断开发新特性
和兼容性。我们对 Swift 充满信心,你还在等什么!
1.2 Swift 初见
通常来说,编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”。在 Swift
中,可以用一行代码实现:
println("Hello, world")
如果你写过 C 或者 Objective-C 代码,那你应该很熟悉这种形式——在 Swift 中,这
行代码就是一个完整的程序。你不需要为了输入输出或者字符串处理导入一个单独的库。
全局作用域中的代码会被自动当做程序的入口点,所以你也不需要 main 函数。你同样不
需要在每个语句结尾写上分号。

这个教程会通过一系列编程例子来让你对 Swift 有初步了解,如果你有什么不理解的地
方也不用担心——任何本章介绍的内容都会在后面的章节中详细讲解。
注意:
为了获得最好的体验,在 Xcode 当中使用代码预览功能。代码预览功能可以让你编辑代
码并实时看到运行结果。
简单值
使用 let 来声明常量,使用 var 来声明变量。一个常量的值在编译时并不需要获取,但
是你只能为它赋值一次。也就是说你可以用常量来表示这样一个值:你只需要决定一次,
但是需要使用很多次。
var myVariable = 42
myVariable = 50
let myConstant = 42
常量或者变量的类型必须和你赋给它们的值一样。然而,声明时类型是可选的,声明的同
时赋值的话,编译器会自动推断类型。在上面的例子中,编译器推断出 myVariable 是
一个整数(integer)因为它的初始值是整数。
如果初始值没有提供足够的信息(或者没有初始值),那你需要在变量后面声明类型,用
冒号分割。
let implicitInteger = 70
let implicitDouble = 70.0
let explicitDouble: Double = 70
练习:
创建一个常量,显式指定类型为 Float 并指定初始值为 4。
值永远不会被隐式转换为其他类型。如果你需要把一个值转换成其他类型,请显式转换。
let label = "The width is"
let width = 94
let widthLabel = label + String(width)
练习:

删除最后一行中的 String,错误提示是什么?
有一种更简单的把值转换成字符串的方法:把值写到括号中,并且在括号之前写一个反斜
杠。例如:
let apples = 3
let oranges = 5
let appleSummary = "I have \(apples) apples."
let fruitSummary = "I have \(apples + oranges)
pieces of fruit."
练习:
使用\()来把一个浮点计算转换成字符串,并加上某人的名字,和他打个招呼。
使用方括号[]来创建数组和字典,并使用下标或者键(key)来访问元素。
var shoppingList = ["catfish", "water", "tulips",
"blue paint"]
shoppingList[1] = "bottle of water"
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic",
]
occupations["Jayne"] = "Public Relations"
要创建一个空数组或者字典,使用初始化语法。
let emptyArray = String[]()
let emptyDictionary = Dictionary()
如果类型信息可以被推断出来,你可以用[]和[:]来创建空数组和空字典——就像你声明
变量或者给函数传参数的时候一样。
shoppingList = [] // 去逛街并买点东西

控制流
使用 if 和 switch 来进行条件操作,使用 for-in 、for、while 和 do-while 来进行
循环。包裹条件和循环变量括号可以省略,但是语句体的大括号是必须的。
let individualScores = [75, 43, 103, 87, 12]
var teamScore = 0
for score in individualScores {
if score > 50 {
teamScore += 3
} else {
teamScore += 1
}
}
teamScore
在 if 语句中,条件必须是一个布尔表达式——这意味着像 if score { ... } 这样的
代码将报错,而不会隐形地与 0 做对比。
你可以一起使用 if 和 let 来处理值缺失的情况。有些变量的值是可选的。一个可选的值
可能是一个具体的值或者是 nil,表示值缺失。在类型后面加一个问号来标记这个变量的
值是可选的。
var optionalString: String? = "Hello"
optionalString == nil
var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
greeting = "Hello, \(name)"
}
练习:
把 optionalName 改 成 nil , greeting 会 是 什 么 ? 添 加 一 个 else 语 句 , 当
optionalName 是 nil 时给 greeting 赋一个不同的值。
如果变量的可选值是 nil,条件会判断为 false ,大括号中的代码会被跳过。如果不是
nil,会将值赋给 let 后面的常量,这样代码块中就可以使用这个值了。
switch 支持任意类型的数据以及各种比较操作——不仅仅是整数以及测试相等。
let vegetable = "red pepper"
剩余63页未读,继续阅读

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论2