小文字 吃饭,睡觉,遛狗头

swift不一样的函数声明与使用

img

swift中函数的声明有很多形式,主要集中在对形参的表示上面。

java中方法只有一个名字,没有扩展参数名,但是swift(oc)支持扩展方法名,也可以为参数设置默认值,同时支持方法类型的参数,还有一点就是支持闭包closure。

下面以hello为例,不同写法的效果是一样的,都返回一个Hello Frank的字符串。

//方法定义
//1.
func hello(n : String) -> String {
    return "Hello \(n)"
}

hello("Frank")
//2.扩展方法名name
func hello2(name n:String) -> String {
    return "Hello \(n)"
}
hello2(name:"Frank")

//3.形参和扩展方法名一样,name
func hello3(#name:String) -> String {
    return "Hello \(name)"
}
hello3(name: "Franck")

//4.为形参设置默认值
func hello4(name: String = "Franck") -> String {
    return "Hello \(name)"
}
hello4()

//5.声明变量形参
func hello5(var name: String = "Frank") -> String {
    return "Hello \(name)"
}
hello5()

//6.方法参数
func sayHello(name:String) ->String {
    return "Hello \(name)"
}
func hello6(name:String, f:(String)->String) -> String {
    return f(name)
}
hello6("Frank", sayHello)

//7.闭包
hello6("Frank", {(name:String)->String in
    return "Hello \(name)"
    })

//8.闭包简写,省略参数方法的参数类型
hello6("Frank", {name in
    return "Hello \(name)"
})

//9.闭包简写,省略参数方法的声明
hello6("Frank", {
    return "Hello \($0)"
})