首页 > 代码库 > Swift 新语言开发
Swift 新语言开发
全书目录:
一、Welcome to Swift
二、Language Guide
三、Language Reference
/*
译者的废话:
几个小时前熬夜看了WWDC,各种激动,今年很有料啊!当看到Swift出来的时候,瞬间傻眼,又要学习新语言了。这篇文章来自苹果官方的《The Swift Programming Language》一书,500页左右,在苹果官网有下载。Swift大家都没实际用过,本翻译一定是有各种错漏的,各位多多包涵,我会不断更新修正的。
——(博客园、新浪微博)葛布林大帝
*/
一、Welcome to Swift
1.关于Swift
Swift是一种用于iOS和OS X应用的全新编程语言,它建立在最好的C和Objective-C语言中,并且没有C语言的兼容性限制。Swift采用安全的编程模式,增加了现代功能使编程更容易、更灵活、更有趣。Swift背靠成熟且备受宠爱的Cocoa 和 Cocoa Touch框架的支持,这是一个重新构想软件开发的机会。
Swift经过了数年的酝酿,Apple通过改进现有的编译器、调试器和框架结构奠定了Swift的基础,并通过Automatic Reference Counting(ARC)简化了内存管理。Swift的框架建立在坚实的Foundation和Cocoa上,已实现现代化和彻底标准化。 Objective-C本身已经逐步发展到到支持blocks、 collection literals 和modules,使框架采用不中断的现代语言技术。感谢这个基础,我们可以为Apple软件发展的未来引入一种新语言。
对Objective-C开发者来说Swift看起来很熟悉,它具有Objective-C命名参数的可读性和动态对象模型的力量,提供了无缝接入现有Cocoa框架和与Objective-C混编的能力。建立在这个共同点上,Swift引入了许多新的特性、统一的程序和面向对象的语言部分。
Swift对于新程序员是友好的,作为一个具有表现力和娱乐性的脚本语言,它是第一个获得工业品质的系统编程语言。它支持playgrounds,一个允许程序员调试Swift代码并立即看到结果,而无需反复编译运行程序的新功能。
Swift结合了最好的现代语言思维和智慧 - 来自广大的苹果工程师文化。编译器针对性能进行了优化,语言也进行了发展优化,而无需任何牺牲。它的设计从“Hello World”扩展到整个操作系统,这一切使得Swift对于开发者和Apple是一个有意义的投资。
Swift以极好的方式来编写的iOS和OS X应用,并将继续发展与新特性和功能。Swift充满野心,我们已经迫不及待看你能用它创造什么。
2.Swift概览
传统建议新语言的第一个程序应该打印“Hello, World”在屏幕上,在Swift里这只需要一行来完成。
如果你在C或Objective-C语言编写过代码,这个语法看起来会很熟悉 —— 在Swift里,这行代码是一个完整的程序,你不需要为input/output或字符串处理等功能导入一个单独的库。写在全球范围的代码都作为函数的入口点,所以你并不需要一个main函数,也不必在每个语句的末尾写分号。
这次概览通过展示如何完成各种程序任务来给你足够的信息开始编写Swift代码,如果你不明白的地方,不要担心,这个概览里的一切细节都会在本书后面详细解释。
注:为获得最佳体验,在Xcode里把本章作为一个playground打开,playground允许你编辑代码清单,并立即看到结果。
2.1.简单值
使用let创建一个常量,var创建一个变量。一个常量的值并不需要在编译时是已知的,但你必须给它分配一个值一次,这意味着您可以使用常量来命名一个你决定在许多地方使用的值。
常量或变量必须有相同的类型,你要分配给它的值。然而,你并不总是必须明确写出类型。提供一个值,当您创建一个常量或变量可以让编译器推断出其类型。在上面的示例中,编译器推断出myVariable是整数,因为它的初始值是一个整数。
如果初始值没有提供足够的信息(或者如果没有初始值),可以在改变后制定类型,用冒号隔开。
试验:创建一个常数,明确为float类型,并且值为4
值永远不会绝对转换为另一种类型。如果你需要一个值转换为不同的类型,明确地创建一个所需类型的实例。
试验:尝试从最后一行除去String的转换,你得到了什么错误?
还有一个更简单的方法包含字符串值:把值写在括号中 ,并在括号前写一个反斜线(\)。例如:
试验:使用(\),在一个string里包含一个浮点计算,并在一个greeting里包含某个人的名字。
使用方括号([])创建数组和字典,并在括号中写出index和key来访问它们的元素。
要创建一个空数组或字典,使用初始化语法。
如果类型信息可以推断,你可以写一个空数组为[]和一个空字典为[;] ——例如,当你设置一个变量的新值或参数传递给函数。