Swift是苹果的品牌新的编程语言,在2014年WWDC(苹果开发者大会)上发布的编程语言。
随着Swift语言的发布,苹果也发布了一个出色的SWIFT的参考指南,这里强烈推荐。
但是这个学习指南又长又瘦!所以,如果没有很多的时间,只是想快速学习Swift,那么本教程就是为你准备的。
本 Swift 教程将需要大约25分钟学习,给出 Swift 语言一个快速浏览,包括变量,控制流,类等以及更多的最佳实践。
对于本Swift教程,需要Xcode最新版本(在写这篇Swift教程的时候使用的是Xcode 6.1.1)。学习本教程之前不需要任何Swift和Objective-C的经验,但如果有一些编程经验,但这会对理解和学习有帮助。
注意: 请确保有最新的Xcode(在Mac App Store检查以确保)。Swift正在发生迅速的变化,我们正在竭尽所能为每一个测试版更新本教程; 代码可能无法正常工作在旧版本的Xcode中的或预发行版本中。
Playgrounds简介
启动 Xcode 6, 并转到 File\New\File. 选择 iOS\Source\Playground, 并点击 Next.
命名文件为 SwiftTutorial.playground, 并点击 Create, 并保存在一个方便的地方. 删除其它不用的文件,以保持一个干净的文件目录.
playground 是一种文件类型,并且允许测试 Swift 代码, 可以侧边栏查看每一行的结果. 例如:添加以下行到 playground 中:
let tutorialTeam = 60 let editorialTeam = 17 let totalTeam = tutorialTeam + editorialTeam
totalTeam += 1
let tutorialTeam: Int = 60
let tutorialTeam = 60
let priceInferred = 19.99 let priceExplicit: Double = 19.99
Bools let onSaleInferred = true let onSaleExplicit: Bool = false
Strings let nameInferred = "Whoopie Cushion" let nameExplicit: String = "Whoopie Cushion"
if onSaleInferred { println("\(nameInferred) on sale for \(priceInferred)!") } else { println("\(nameInferred) at regular price: \(priceInferred)!") }
还有一个可以看到输出方法。去到Xcode的主菜单,然后选择 View\Assistant Editor\Show Assistant Editor.
助理编辑器会告诉你的代码中任何println语句的结果,并将结果值显示在一个方便的地方,这往往比使用鼠标放在每一行更容易。
类与方法
在Swift开发中会创建类和方法,这是最常见的作法,让我们来看看!
首先,删除在playground文件的一切内容,以便可以在一个干净的文件中开始新的代码编写。
接下来,将创建一个小费计算器类,以帮助描绘餐厅。 一次添加一小块代码,在这里将一步一步地解释。
// 1 class TipCalculator {}
// 2 let total: Double let taxPct: Double let subtotal: Double
// 3 init(total: Double, taxPct: Double) { self.total = total self.taxPct = taxPct subtotal = total / (taxPct + 1) }
(subtotal * taxPct) + subtotal = total subtotal * (taxPct + 1) = total subtotal = total / (taxPct + 1)
// 4 func calcTipWithTipPct(tipPct: Double) -> Double { return subtotal * tipPct }
// 5 func printPossibleTips() { println("15%: \(calcTipWithTipPct(0.15))") println("18%: \(calcTipWithTipPct(0.18))") println("20%: \(calcTipWithTipPct(0.20))") }
// 6 let tipCalc = TipCalculator(total: 33.25, taxPct: 0.06) tipCalc.printPossibleTips()
// 1 class TipCalculator { // 2 let total: Double let taxPct: Double let subtotal: Double // 3 init(total: Double, taxPct: Double) { self.total = total self.taxPct = taxPct subtotal = total / (taxPct + 1) } // 4 func calcTipWithTipPct(tipPct: Double) -> Double { return subtotal * tipPct } // 5 func printPossibleTips() { println("15%: \(calcTipWithTipPct(0.15))") println("18%: \(calcTipWithTipPct(0.18))") println("20%: \(calcTipWithTipPct(0.20))") } } // 6 let tipCalc = TipCalculator(total: 33.25, taxPct: 0.06) tipCalc.printPossibleTips()
数组和For循环
目前,在上面的代码中有一些重复,因为调用 calcTipWithTotalmethod 几次来计算不同比例的小费。 这里可以通过使用一个数组来减少重复。
替换 printPossibleTips 如以下内容:
let possibleTipsInferred = [0.15, 0.18, 0.20]; // 小费比例数组列表 let possibleTipsExplicit:[Double] = [0.15, 0.18, 0.20]; // 小费比例数组列表
for possibleTip in possibleTipsInferred { println("\(possibleTip*100)%: \(calcTipWithTipPct(possibleTip))") }
for i in 0..< possibleTipsInferred.count { let possibleTip = possibleTipsInferred[i] println("\(possibleTip*100)%: \(calcTipWithTipPct(possibleTip))") }
// 1 func returnPossibleTips() -> [Int: Double] { let possibleTipsInferred = [0.15, 0.18, 0.20] let possibleTipsExplicit:[Double] = [0.15, 0.18, 0.20] // 2 var retval = [Int: Double]() for possibleTip in possibleTipsInferred { let intPct = Int(possibleTip*100) // 3 retval[intPct] = calcTipWithTipPct(possibleTip) } return retval }
tipCalc.returnPossibleTips()
就是这样 - 恭喜,一个用Swift编写的全功能小费计算器已经完成!
下面是本教程所有最终 playground 文件的代码内容:
// 1 class TipCalculator { // 2 let total: Double let taxPct: Double let subtotal: Double // 3 init(total: Double, taxPct: Double) { self.total = total self.taxPct = taxPct subtotal = total / (taxPct + 1) }// 4 func calcTipWithTipPct(tipPct: Double) -> Double { return subtotal * tipPct } // 1 func returnPossibleTips() -> [Int: Double] { let possibleTipsInferred = [0.15, 0.18, 0.20] let possibleTipsExplicit:[Double] = [0.15, 0.18, 0.20] // 2 var retval = [Int: Double]() for possibleTip in possibleTipsInferred { let intPct = Int(possibleTip*100) // 3 retval[intPct] = calcTipWithTipPct(possibleTip) } return retval } } // 6 let tipCalc = TipCalculator(total: 33.25, taxPct: 0.06) tipCalc.returnPossibleTips() }