• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

AppleSwift学习教程

原作者: [db:作者] 来自: [db:来源] 收藏 邀请


翻译自苹果的官方文档:The Swift Programming Language

简单介绍

今天凌晨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集成了现代编程语言思想,以及Appleproject文化的智慧。编译器是依照性能优化的,而语言是为开发优化的,无需互相折中。(by gashero)能够从"Hello, world"開始学起并过渡到整个系统。全部这些使得Swift成为Apple软件开发人员创新的源泉。

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

Swift 初见

通常来说,编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”。在 Swift 中,能够用一行代码实现: 
  1. println("hello, world"
 
假设你写过 C 或者 Objective-C 代码,那你应该非常熟悉这样的形式——在 Swift 中。这行代码就是一个完整的程序。

你不须要为了输入输出或者字符串处理导入一个单独的库。全局作用域中的代码会被自己主动当做程序的入口点。所以你也不须要main函数。

你相同不须要在每一个语句结尾写上分号。

 
这个教程会通过一系列编程样例来让你对 Swift 有初步了解。假设你有什么不理解的地方也不用操心——不论什么本章介绍的内容都会在后面的章节中具体解说。
 
 注意:为了获得最好的体验,在 Xcode 其中使用代码预览功能。

代码预览功能能够让你编辑代码并实时看到执行结果。

 

简单值

使用let来声明常量,使用var来声明变量。一个常量的值在编译时并不须要获取,可是你仅仅能为它赋值一次。也就是说你能够用常量来表示这样一个值:你仅仅须要决定一次。可是须要使用非常多次。
  1. var myVariable = 42 
  2. myVariable = 50 
  3. let myConstant = 42 
  
常量或者变量的类型必须和你赋给它们的值一样。然而,声明时类型是可选的,声明的同一时候赋值的话,编译器会自己主动判断类型。在上面的样例中,编译器判断出myVariable是一个整数(integer)由于它的初始值是整数。
 
假设初始值没有提供足够的信息(或者没有初始值)。那你须要在变量后面声明类型。用冒号切割。
  1. let implicitInteger = 70 
  2. let implicitDouble = 70.0 
  3. let explicitDouble: Double = 70 
 
练习:创建一个常量,显式指定类型为Float并指定初始值为4。
 
值永远不会被隐式转换为其它类型。假设你须要把一个值转换成其它类型,请显式转换。
  1. let label = "The width is" 
  2. let width = 94 
  3. let widthLabel = label + String(width) 
  
练习:删除最后一行中的String。错误提示是什么?
 
有一种更简单的把值转换成字符串的方法:把值写到括号里。而且在括号之前写一个反斜杠。

比如:

  1. let apples = 3 
  2. let oranges = 5 
  3. let appleSummary = "I have \(apples) apples." 
  4. let fruitSummary = "I have \(apples + oranges) pieces of fruit." 
 
练习:使用\()来把一个浮点计算转换成字符串。并加上某人的名字。和他打个招呼。
 
使用方括号[]来创建数组和字典。并使用下标或者键(key)来訪问元素。

  1. var shoppingList = ["catfish""water""tulips""blue paint"
  2. shoppingList[1] = "bottle of water" 
  3.   
  4. var occupations = [ 
  5.     "Malcolm""Captain"
  6.     "Kaylee""Mechanic"
  7. occupations["Jayne"] = "Public Relations" 
  
要创建一个空数组或者字典,使用初始化语法。 
  1. let emptyArray = String[]() 
  2. let emptyDictionary = Dictionary<String, Float>() 
 
假设类型信息能够被判断出来,你能够用[]和[:]来创建空数组和空字典——就像你声明变量或者给函数传參数的时候一样。
  1. shoppingList = []   // 去逛街并买点东西 
 

控制流

使用if和switch来进行条件操作。使用for-in、for、while和do-while来进行循环。

包裹条件和循环变量括号能够省略。可是语句体的大括号是必须的。 

  1. let individualScores = [75, 43, 103, 87, 12] 
  2. var teamScore = 0 
  3. for score in individualScores { 
  4.     if score > 50 { 
  5.         teamScore += 3 
  6.     } else { 
  7.         teamScore += 1 
  8.     } 
  9. teamScore 
 
在if语句中。条件必须是一个布尔表达式——像if score { ... }这种代码是错误的。
 
你能够一起使用if和let来处理值缺失的情况。有些变量的值是可选的。

一个可选的值可能是一个详细的值或者是nil,表示值缺失。在类型后面加一个问号来标记这个变量的值是可选的。

  1. var optionalString: String? = "Hello" 
  2. optionalString == nil 
  3.   
  4. var optionalName: String?

     = "John Appleseed" 

  5. var greeting = "Hello!" 
  6. if let name = optionalName { 
  7.     greeting = "Hello, \(name)" 
  
练习:把optionalName改成nil。greeting会是什么?加入一个else语句。当optionalName是nil时给greeting赋一个不同的值。
 
假设变量的可选值是nil,条件会推断为false。大括号里的代码会被跳过。假设不是nil,会将值赋给let后面的常量,这样代码块中就能够使用这个值了。
 
switch支持随意类型的数据以及各种比較操作——不不过整数以及測试相等。
  1. let vegetable = "red pepper" 
  2. switch vegetable { 
  3. case "celery"
  4.     let vegetableComment = "Add some raisins and make ants on a log." 
  5. case "cucumber""watercress"
  6.     let vegetableComment = "That would make a good tea sandwich." 
  7. case let x where x.hasSuffix("pepper"): 
  8.     let vegetableComment = "Is it a spicy \(x)?" 
  9. default
  10.     let vegetableComment = "Everything tastes good in soup." 
 
练习删除default语句,看看会有什么错误?
 
执行switch中匹配到的子句之后,程序会退出switch语句。并不会继续向下执行。所以不须要在每一个子句结尾写break。
 
你能够使用for-in来遍历字典。须要两个变量来表示每一个键值对。 
  1. let interestingNumbers = [ 
  2.     "Prime": [2, 3, 5, 7, 11, 13], 
  3.     "Fibonacci": [1, 1, 2, 3, 5, 8], 
  4.     "Square": [1, 4, 9, 16, 25], 
  5. var largest = 0 
  6. for (kind, numbers) in interestingNumbers { 
  7.     for number in numbers { 
  8.         if number > largest { 
  9.             largest = number 
  10.         } 
  11.     } 
  12. largest 
 
练习:加入还有一个变量来记录哪种类型的数字是最大的。
 
使用while来反复执行一段代码直到不满足条件。

循环条件能够在开头也能够在结尾。

  1. var n = 2 
  2. while n < 100 { 
  3.     n = n * 2 
  4.   
  5. var m = 2 
  6. do { 
  7.     m = m * 2 
  8. while

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
swift:入门知识之类和对象发布时间:2022-07-18
下一篇:
使用Playground编写第一个Swift程序发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap