蹩脚的自学笔记the swift programming language

来源:互联网 发布:e卡销外包源码 编辑:程序博客网 时间:2024/05/25 01:35

关于Swift


Swift是一门iOS和OS X应用的新的编程语言,在最好的C和OC的基础上建立,没有C兼容性的限制。

swift采用安全编程模式并且增加了新特性使编程变得更容易,更灵活更有趣。在成熟的并受到广泛喜爱的Cocoa和Cocoa Touch的支持下,swift的干净的石板是一个重新构思软件开发如何工作的机会。


swift已经制作多年,苹果通过改进当前的编译器、排错程序和基础框架为swift提供基础。我们使用ARC简化了内存管理。我们的框架栈基于Foundation 和 Cocoa坚实的基础建立,已经现代化和国际化。Objective-C它自己已经进化到支持block、collection literals和modules,使框架能采用现代的语言技术而不混乱。感谢这些基础工作,我们现在可以介绍一门新的语言为将来开发苹果软件使用。


Swift对于Objective-C开发者来说感觉很熟悉。它采用Objective-C参数命名的可读性和Objective-C强大的动态对象模式。它提供了对现有Cocoa框架的无缝访问和与Objective-C代码的互通性。swift由这些公共基础构成,并引入了许多新的特性和统一程序上的和面向对象的诸多方面。


swift对于新的开发者是友好的。它是第一个工业质量系统程序语言和脚本语言一样生动有趣。它支持palygrounds一个有创意的特性允许程序员用swift代码做实验并且立刻看到结果,不用经常编译运行程序。



Swift结合现代语言最好的想法和广大苹果工程师的智慧。编译器为性能经过充分优化,语言为开发经过充分优化,两者都没有妥协。它被设计从“hello world”到整个操作系统逐级上升。所有这些使Swift成为将来可靠的投资对开发者和苹果。


Swift是一个非常棒的写iOS和OS X程序的方法,将继续发展新的特性和能力。我们的目标是有志向的,我们迫不及待想看到你用它开发了什么。



向导


传统的建议学习一门语言的第一个程序是在屏幕上打印“Hello,world”。在Swift中,只用一行来完成这些:


如果你已经用C或者Objective-C写过代码,这些句法对你来说是比较熟悉的。Swift中,这行代码是一个完整的程序,你不必为输入输出或者处理字符串这样的功能引入一个独立的库。代码写在全局范围被用来作为程序的入口,因此你不需要main函数。也不用在每行语句的结尾写分号。


这个向导通过展示完成各种编程任务给了你足够的信息在Swift中开始写代码。如果你不理解某些东西请不要紧张,这个向导中介绍的任何东西在这本书的剩余部分都有详细解释。


使用 let 创建常量 var创建变量。在编译时不需要知道常量的值,但是你必须明确地分配给它一个值(一次or 曾经)。这意味着你可以使用常量命名一个定义一次但是在多个地方使用的值。


一个常量或者变量必须与分配给它的值类型相同,然而,你不总是必须写明类型。当你创建一个常量或者变量的时候提供一个值 让编译器推断出它的类型。上面的例子,编译器推断出myVariable 是一个整型因为它的初始化值是一个整型。


如果初始化的值不能提供足够的信息指明一个类型或者没有初始化的值,通过在变量后面写明类型 用冒号分开变量和类型来具体说明变量的类型。


练习:明确定义一个常量类型为 Float值为4


值从不会隐式转换为其他类型。如果你需要转换一个值到另一个类型,明确创建一个目标类型的例子。


练习:试着删除最后一行的String ,你得到了什么类型的错误?


有一个更简单的方法在字符串类型中包含值:

将值写在圆括号内并在圆括号前写一个反斜线,例如:


练习:使用\()在字符串里加入浮点计算结果并在打招呼中加入一些人的名字


使用方括号([])创建数组和字典,通过在方括号里写下标或者键访问数组中的元素。


使用初始化句法创建空的数组或者字典


如果可以推断类型,可以用 [ ]创建空数组 用[ : ]创建空字典,例如:

当你为一个变量赋一个新的值或者给一个函数传递一个参数的时候。


流程控制


使用 if 和 switch 生成条件表达式,使用 for-in, for, while, 和 do-while生成循环。

包括着条件和循环变量的圆括号是可选的。包括着语句体的大括号是必须的。


if语句中,条件表达式必须是一个Boolean类型的表达式。也就是说上述例子如果写成

if score { ... }是错误的,不是和零的隐式比较。


你可以把 if 和 let 一起使用以便与可能消失的值一起工作,这些值表现为可选项。一个optional value

或者包含一个值或者包含 nil 来指示这个值消失了。 在一个值的类型后面写一个问号,标记

这个值为可选的。


练习:

把optionalName 赋值 nil ,greeting 会变成什么?增加一个 else 分支为greeting 设置一个不同的值。


如果这个optional value 为nil ,这个条件表达式的值为 false 在大括号中的代码被跳过了。否则,这个

optional value被解包并且分配给 let后面的常量中,这个常量使被解包的值在代码块中是可用的。


Switch 支持各种类型的数据和大量的比较操作 — 不限于整型和等值测试。


练习:试着删除default,你得到了什么错误?


执行完switch中匹配的case 代码后,程序退出switch 语句。并不继续执行下一个case,所以这里不需要在每一个case的代码中明确打断switch。


你可以通过给for-in提供一对儿键值对儿名字 遍历字典中的每一个项目。


练习:

增加一个变量追踪最大数字的类型是什么,最大的数字是多少


使用while 重复一块儿代码直到一个条件改变。

循环的条件可以放到最后,确保循环至少运行一次。


你可以在循环中存放索引 — 或者通过使用 .. 来制作一个索引的范围,或者明确指出 初始化、

条件和增量。下面两个循环做同样的事:


使用 .. 制作一个范围 忽略最大值,使用 … 制作一个范围 包含最大值和最小值。


函数和闭包


使用 func 声明一个函数。通过在函数名后面的圆括号中写明参数列表来调用函数。使用 -> 分开参数名和参数类型和函数返回值类型。


练习:

删除 day 参数。增加一个参数在招呼中包括今天的午餐。


使用元组从一个函数中返回多个值。


函数参数的个数也是可变的,将它们集合到数组中。




0 0
原创粉丝点击