码迷,mamicode.com
首页 > 编程语言 > 详细

Swift从零开始学习_04

时间:2015-02-02 15:48:57      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

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, 对于这些闭包不太懂, 准备好好看看这个东西, 今天就暂且看这么多,去好好理解下闭包这东西去...

Swift从零开始学习_04

标签:

原文地址:http://www.cnblogs.com/humbleCP/p/4267833.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!