此篇是为了以后查资料方便,推荐学习的时候照着 The Swift Programming Language 中 tutorial章节敲一遍代码,对照描述理解透彻。新建工程推荐playground,可以直接看到结果
// Playground - noun: a place where people can play import UIKit var str = "Hello, playground" let myConstant:Float = 4 let label = "The width is " let width = 94 let widthLable = "\(label) + \(width)" var shopingList = [] var testDict = [:] var timeTodo = ["myKey":"myValue"] let individualScres = [12,45,52,86,76] var teamScore = 0 for score in individualScres{ if score>50{ teamScore += 3 }else{ teamScore += 1 } } teamScore // "?" stands either that type value or nil var optionalString: Int? = 32 optionalString = 56 if let name = optionalString{ println(name) }else{ println("is nil") } // switch support anykind of data and and wide wariety of comparison operations // every case has add a break default // let use for match the value let vegetable = "red peper" switch vegetable{ case "peper": let vegetableComment = "Add some raisins and make ant on a log" case "red pepper","waterCress": let vegetableComment = "hehe" case let x where x.hasSuffix("peper"): let vegetableComment = "I am here" default: let vegetableComment = "EveryThing tastes good in soup" } let interestingNumbers = [ "prime":[2,3,5,7,11,13], "Fibonacci":[1,1,58,65], "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*m }while(m<200) m // 0 stand for i=0 var firstForLoop = 5 for i in 0..<7 { firstForLoop += i } firstForLoop func greet(name: String, age:Float) -> String { return "Hello,\(name):\(age)" } greet("aiden", 20) // ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^// // use closures as return value func calculateStatistics(scores:[Int]) -> (min:Int, max:Int,sum:Int){ var min = scores[0] var max = scores[0] var sum = 0 for score in scores{ if score > max { max = score } else if score < min { min = score } sum += score } return (min,max,sum) } let result = calculateStatistics([123,54,1,56]) result.max result.min result.sum // take arguments from another function, somelike method factory func makeIncrementer() -> (Int -> Int){ func addOne (number: Int) -> Int { return 1 + number } return addOne } var increment = makeIncrementer() increment(98) // function as an argument func lessThenTen (number:Int )-> Bool{ return number < 10 } func hasAnyMatches(list:[Int],condition:Int -> Bool)->[Int]{ var lessTen:[Int] = [] for number in list{ if condition(number){ lessTen.insert(number, atIndex: 0) } } return lessTen } var numbers = [20,25,3,7,1,3,5,6,8,9]; hasAnyMatches(numbers, lessThenTen) // (number:Int) -> Int is arguments and return type, "in" seperate it and function body // map & sort is nsarray method numbers.map({ (number:Int) -> Int in let result = 3 * number return result }) let mappedNumbers = numbers.map({number in 3*number}) mappedNumbers let sortedNumbers = sorted(mappedNumbers){$0 > $1} sortedNumbers