Swift tutorial 自学笔记(一):value 和 过程

来源:互联网 发布:下载机械制图软件 编辑:程序博客网 时间:2024/05/17 04:00

此篇是为了以后查资料方便,推荐学习的时候照着 The Swift Programming Language 中 tutorial章节敲一遍代码,对照描述理解透彻。新建工程推荐playground,可以直接看到结果


// Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"let myConstant:Float = 4let label = "The width is "let width = 94let widthLable = "\(label) + \(width)"var shopingList = []var testDict = [:]var timeTodo = ["myKey":"myValue"]let individualScres = [12,45,52,86,76]var teamScore = 0for score in individualScres{    if score>50{        teamScore += 3    }else{        teamScore += 1    }}teamScore// "?" stands either that type value or nilvar optionalString: Int? = 32optionalString = 56if 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 valuelet 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 = 0for (kind,numbers) in interestingNumbers{    for number in numbers{        if number>largest{            largest = number        }    }}largestvar n = 2while n<100{    n = n * 2}nvar m = 2do {    m = m*m}while(m<200)m// 0 stand for i=0var firstForLoop = 5for i in  0..<7 {    firstForLoop += i}firstForLoopfunc greet(name: String, age:Float) -> String {    return "Hello,\(name):\(age)"}greet("aiden", 20)// ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^//// use closures as return valuefunc 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.maxresult.minresult.sum// take arguments from another function, somelike method factoryfunc makeIncrementer() -> (Int -> Int){    func addOne (number: Int) -> Int {        return 1 + number    }    return addOne}var increment = makeIncrementer()increment(98)// function as an argumentfunc 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 methodnumbers.map({    (number:Int) -> Int in    let result = 3 * number    return result})let mappedNumbers = numbers.map({number in 3*number})mappedNumberslet sortedNumbers = sorted(mappedNumbers){$0 > $1}sortedNumbers





0 0