首页 > 代码库 > Swift从零开始学习_04

Swift从零开始学习_04

Swift第四天

    上周五有点事, 没有时间学习,周六周日又忙着去找房子了, 都没空看了, 有时间了一定坚持看! 

主要还是函数的一些知识:

①.//变量拥有与函数相同的参数类型, 是可以直接赋值的

func makePlus(a:Int, b:Int)->Int{    return a + b}var replaceFun:(Int, Int)->Int = makePlus//变量拥有与函数相同的参数类型, 是可以直接赋值的println("Result: \(replaceFun(2,3))")

②.

//函数嵌套, 根据传入的bool值去判断执行哪一个函数

//函数嵌套, 根据传入的bool值去判断执行哪一个函数func returnBool(onreturn: Bool, testInput:Int)-> Int{    func boolIsYES(input:Int)->Int{        return input + 1    }    func boolIsNO(input:Int)->Int{        return input - 1    }    return onreturn ? boolIsYES(testInput) : boolIsNO(testInput)}var x = 2let y = returnBool(x > 0, 5)//(Int)->Int 表示返回参数为整形,返回值为整形的函数

③.//sort函数

sort(&names, backwards)//排序函数, 这里第二个参数需要传入一个参数是字符串, 返回值为bool的函数println(names)

④.//闭包表达式

//{ (parameters) -> returnType in statements}//排序对应的闭包函数,闭包的函数体部分由关键字in引入。 该关键字表示闭包的参数和返回值类型定义已经完成,闭包函数体即将开始。sort(&names, { (s1: String, s2: String) -> Bool in return s1 > s2 } )println(names)

⑤.

//根据上下文推断类型.由于swift的强大的推断能力, 所以这个闭包函数也可以写成, 他会自动根据上下文推断出数据类型sort(&names,{s1,s2 in  s1 < s2}) //这里出现一个问题, 使用‘>‘号的时候会报错println(names)

 

⑥.

//参数名称缩写sort(&names, {$0 < $1})//同样这里使用‘>‘会报错,目前不知道原因println(names)

⑦.

//运算符函数, Swift 的String类型定义了关于大于号 (>) 的字符串实现,其作为一个函数接受两个String类型的参数并返回Bool类型的值, 同样这里也可以换成‘<‘, 这里就不会报错, 很奇怪啊sort(&names, >)println(names)

⑧.

//尾随闭包. 如果您需要将一个很长的闭包表达式作为最后一个参数传递给函数,可以使用尾随闭包来增强函数的可读性。 尾随闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用func funcUseClosure(){    }sort(&names){    $0 < $1}

对于这个闭包的概念, 说真的我看不太懂他什么意思, 由于之前都是用的OC, 对于这些闭包不太懂, 准备好好看看这个东西, 今天就暂且看这么多,去好好理解下闭包这东西去...

Swift从零开始学习_04