现在的位置: 首页 > 综合 > 正文

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

2018年04月19日 ⁄ 综合 ⁄ 共 2512字 ⁄ 字号 评论关闭

此篇是为了以后查资料方便,推荐学习的时候照着 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

抱歉!评论已关闭.