标签:
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 = 2 let 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, 对于这些闭包不太懂, 准备好好看看这个东西, 今天就暂且看这么多,去好好理解下闭包这东西去...
标签:
原文地址:http://www.cnblogs.com/humbleCP/p/4267833.html