苹果Swift语言入门教程

时间:2014-06-03 20:28:33  作者:啤酒  阅读:16777215

目录

1 简介

2 Swift入门

3 简单值

4 控制流

5 函数与闭包

6 对象与类

7 枚举与结构

1   简介

今天凌晨Apple刚刚发布了Swift编程语言,本文从其发布的书籍《The Swift Programming Language》中摘录和提取而成。希望对各位的iOS&OSX开发有所帮助。

Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束。Swift采用了安全的编程模式和添加现代的功能来是的编程更加简单、灵活和有趣。界面则基于广受人民群众爱戴的Cocoa和Cocoa Touch框架,展示了软件开发的新方向。

Swift已经存在了多年。Apple基于已有的编译器、调试器、框架作为其基础架构。通过ARC(Automatic Reference Counting,自动引用计数)来简化内存管理。我们的框架栈则一直基于Cocoa。Objective-C进化支持了块、collection literal和模块,允许现代语言的框架无需深入即可使用。(by gashero)感谢这些基础工作,才使得可以在Apple软件开发中引入新的编程语言。

Objective-C开发者会感到Swift的似曾相识。Swift采用了Objective-C的命名参数和动态对象模型。提供了对Cocoa框架和mix-and-match的互操作性。基于这些基础,Swift引入了很多新功能和结合面向过程和面向对象的功能。

Swift对新的程序员也是友好的。他是工业级品质的系统编程语言,却又像脚本语言一样的友好。他支持playground,允许程序员实验一段Swift代码功能并立即看到结果,而无需麻烦的构建和运行一个应用。

Swift集成了现代编程语言思想,以及Apple工程文化的智慧。编译器是按照性能优化的,而语言是为开发优化的,无需互相折中。(by gashero)可以从"Hello, world"开始学起并过渡到整个系统。所有这些使得Swift成为Apple软件开发者创新的源泉。

Swift是编写iOS和OSX应用的梦幻方式,并且会持续推进新功能的引入。我们迫不及待的看到你用他来做点什么。

2   Swift入门

一个新语言的学习应该从打印"Hello, world"开始。在Swift,就是一行:

println("Hello, world")

如果你写过C或Objective-C代码,这个语法看起来很熟悉,在Swift,这就是完整的程序了。你无需导入(import)一个单独的库供输入输出和字符串处理。全局范围的代码就是用于程序的入口,所以你无需编写一个 main() 函数。你也无需在每个语句后写分号。

这个入门会给出足够的信息教你完成一个编程任务。无需担心你还不理解一些东西,所有没解释清楚的,会在本书后续详细讲解。

Note

作为最佳实践,可以将本章在Xcode的playground中打开。Playground允许你编辑代码并立即看到结果。

3   简单值

使用 let 来定义常量, var 定义变量。常量的值无需在编译时指定,但是至少要赋值一次。这意味着你可以使用常量来命名一个值,你发现只需一次确定,却用在多个地方。

var myVariable = 42

myVariable = 50

let myConstant = 42

Note

gashero注记

这里的常量定义类似于函数式编程语言中的变量,一次赋值后就无法修改。多多使用有益健康。

一个常量或变量必须与赋值时拥有相同的类型。因此你不用严格定义类型。提供一个值就可以创建常量或变量,并让编译器推断其类型。在上面例子中,编译其会推断myVariable是一个整数类型,因为其初始化值就是个整数。

Note

gashero注记

类型与变量名绑定,属于静态类型语言。有助于静态优化。与Python、JavaScript等有所区别。

如果初始化值没有提供足够的信息(或没有初始化值),可以在变量名后写类型,以冒号分隔。

let imlicitInteger = 70

let imlicitDouble = 70.0

let explicitDouble: Double = 70

Note

练习

创建一个常量,类型为Float,值为4。

值永远不会隐含转换到其他类型。如果你需要转换一个值到不同类型,明确的构造一个所需类型的实例。

let label = "The width is "

let width = 94

let widthLabel = label + String(width)

Note

练习

尝试删除最后一行的String转换,你会得到什么错误?

还有更简单的方法来在字符串中包含值:以小括号来写值,并用反斜线("")放在小括号之前。例如:

let apples = 3

let oranges = 5 //by gashero

let appleSummary = "I have \(apples) apples."

let fruitSummary = "I have \(apples + oranges) pieces of fruit."

Note

练习

使用 () 来包含一个浮点数计算到字符串,并包含某人的名字来问候。

创建一个数组和字典使用方括号 "[]" ,访问其元素则是通过方括号中的索引或键。

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 = [] //去购物并买些东西 by gashero

4   控制流

使用 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{

teamScores += 3

}

else {

teamScores += 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)"

}

Note

练习

改变 optionalName 为 nil 。在问候时会发生什么?添加一个 else 子句在 optionalName 为 nil 时设置一个不同的值。

如果可选值为 nil ,条件就是 false 大括号中的代码会被跳过。否则可选值未包装并赋值为一个常量,会是的未包装值的变量到代码块中。

switch 支持多种数据以及多种比较,不限制必须是整数和测试相等。

电脑
大小:MB  时间:01.01  赞:

相关文章

  • iOS8.4.1耗电严重解决办法
    iOS8.4.1耗电严重解决办法

    苹果前不久发布了最新的iOS 8.4.1系统更新,封堵了目前iOS 8.4系统的越狱漏洞,但是有不少用户升级到iOS 8.4.1以后,遇到了耗电严重的现象,在苹果的技术支持论坛上,已经有不少用户反映了iOS 8.4.1的耗电问题。

    16777215
  • iOS8.4.1正式版下载
    iOS8.4.1正式版下载

    今天早些时候,苹果正式推出了新的系统更新,而它就是iOS 8.4.1,如果不出意外,这将是iOS 9发布前,最后一个系统更新了。

    16777215
  • iOS8.4.1 beta版发布 越狱漏洞遭封堵
    iOS8.4.1 beta版发布 越狱漏洞遭封堵

    苹果在今天凌晨向开发者发布了 iOS 8.4.1 第一个测试版,距离 iOS 8.4 正式版发布相隔两周。iOS 8.4.1 可能是 iOS 8 最后一次版本更新,iOS 8.4.1 编译号为 12H304,可以在苹果开发者中心下载。目前,我们还不清楚 iOS 8.4.1 的改变,可能只是修复 Bug,至于大家所关心的iOS 8.4的越狱漏洞是否封堵,目前也是不得而知,期待开发者们公布消息。

    1015808
  • iOS8.4完美越狱图文教程
    iOS8.4完美越狱图文教程

    就在昨晚11点钟,苹果向用户推送了iOS8.4 的正式版本,但仅过不到一个小时,来自中国的PP越狱助手团队就宣布iOS8.4正式版成功完美越狱!这也创造了iOS系统正式版越狱时间最快的历史记录。今天小编就为大家带来iOS8.4的越狱教程,希望能大家喜欢!

    16777215
  • ios8.3越狱卡20%解决方法
    ios8.3越狱卡20%解决方法

      太极越狱工具现在支持ios8.1.3~8.3完美越狱啦,并且支持全系列苹果设备,鉴于目前iOS8.3版系统相对稳定,所以有很多果粉们都跃跃欲试,有不少果粉因为电脑没有装苹果驱动及其他原因会出现8.3越狱卡20%的问题,也就是ios8.3越狱卡在百分之20就不动了。小编找到了很好的解决方法,下面提供给大家。

    16777215
  • iOS 8.3狱详细教程
    iOS 8.3狱详细教程

    中国太极团队刚刚发布了iOS 8.1.3-8.3完美越狱工具,全球第一个攻克了iOS 8.3。虽然现在的iOS越狱已经有很简单,但毕竟是刚刚发布,仍然需要注意不少问题。

    14237696
  • iOS 8.4测试版功能大全
    iOS 8.4测试版功能大全

    苹果今天向开发者发布了 iOS 8.4 第一个测试版,距离 iOS 8.3 正式版发布仅仅相隔5天。这次的测试版编译号为 12H407d,开发者可以在 iOS 开发者中心下载,此外,苹果还发布了 Xcode 6.4 测试版。iOS 8.4 包含全新设计的音乐应用,演唱者界面包含全新设计展示歌手的图片,还有个性化的播放列表。全新音乐应用包含迷你播放器,全新设计的“正在播放”,全局搜索方方便用户在应用任意界面发起搜索,以及简化了 iTunes 广播的设计。

    16777215
  • iPhone字体美化教程
    iPhone字体美化教程

    越狱无非是为了让自己的 iOS 设备用起来更舒服,那么怎样才能更舒服呢?换个自己喜欢的字体、换个美化了的图标都可以,现在现如今iOS 8.1.2都可以完美越狱了,还带等什么赶紧去换字体去,至于那些不会换字体的亲们,小编现在就来教你怎么换!

    16777215
  • iOS 8.3更新内容介绍
    iOS 8.3更新内容介绍

    苹果今天发布了 iOS 8.3 升级补丁,这是 iOS 8 系统发布后第三个重大升级。iOS 8.3 第一个测试版在今年2月发送给开发者,公共测试版在今年3月发布。iOS 8.3 增加了很多新功能并改进了系统的设计。目前,用户可以通过 OTA 无线升级。此外,苹果还为 Apple TV 准备了7.2 软件升级。

    16777215
  • ios8.3 beta测试版固件官方下载
    ios8.3 beta测试版固件官方下载

    苹果今天发布了 iOS 8.3 第一册测试版,而一周前发布的 iOS 8.2 第五个测试版也正在测试之中。iOS 8.3 的编译号为12F5027d,这次发布的还包括 Xcode 6.3 测试版以及 Swift 1.2。根据测试,iOS 8.3 似乎移除了 iCloud 照片图库的测试标识,并开始提供全新CarPlay 功能,也就是无线连接。

    2772992

手机版 | 电脑版 | 客户端

本站所有资源均由网友上传,侵权请发邮件至 hnrshwl@163.com