翻译自苹果的官方文档: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 初见
- println("hello, world")
你不须要为了输入输出或者字符串处理导入一个单独的库。全局作用域中的代码会被自己主动当做程序的入口点。所以你也不须要main函数。
你相同不须要在每一个语句结尾写上分号。
注意:为了获得最好的体验,在 Xcode 其中使用代码预览功能。 代码预览功能能够让你编辑代码并实时看到执行结果。 |
简单值
- var myVariable = 42
- myVariable = 50
- let myConstant = 42
- let implicitInteger = 70
- let implicitDouble = 70.0
- let explicitDouble: Double = 70
- let label = "The width is"
- let width = 94
- let widthLabel = label + String(width)
比如:
- let apples = 3
- let oranges = 5
- let appleSummary = "I have \(apples) apples."
- let fruitSummary = "I have \(apples + oranges) pieces of fruit."
- 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<String, Float>()
- shoppingList = [] // 去逛街并买点东西
控制流
包裹条件和循环变量括号能够省略。可是语句体的大括号是必须的。
- let individualScores = [75, 43, 103, 87, 12]
- var teamScore = 0
- for score in individualScores {
- if score > 50 {
- teamScore += 3
- } else {
- teamScore += 1
- }
- }
- teamScore
一个可选的值可能是一个详细的值或者是nil,表示值缺失。在类型后面加一个问号来标记这个变量的值是可选的。
- var optionalString: String? = "Hello"
- optionalString == nil
- var optionalName: String?
= "John Appleseed"
- var greeting = "Hello!"
- if let name = optionalName {
- greeting = "Hello, \(name)"
- }
- let vegetable = "red pepper"
- switch vegetable {
- case "celery":
- let vegetableComment = "Add some raisins and make ants on a log."
- case "cucumber", "watercress":
- let vegetableComment = "That would make a good tea sandwich."
- case let x where x.hasSuffix("pepper"):
- let vegetableComment = "Is it a spicy \(x)?"
- default:
- let vegetableComment = "Everything tastes good in soup."
- }
- let interestingNumbers = [
- "Prime": [2, 3, 5, 7, 11, 13],
- "Fibonacci": [1, 1, 2, 3, 5, 8],
- "Square": [1, 4, 9, 16, 25],
- ]
- var largest = 0
- for (kind, numbers) in interestingNumbers {
- for number in numbers {
- if number > largest {
- largest = number
- }
- }
- }
- largest
循环条件能够在开头也能够在结尾。
- var n = 2
- while n < 100 {
- n = n * 2
- }
- n
- var m = 2
- do {
- m = m * 2
- } while
请发表评论