swift函数定义跟调用总结

swift提供了大量方便快捷的定义方式,今天在这里做一个总结。
1、无参数无返回值函数

func test1() {
    print("无参数无返回值函数")
}

调用:test1()

2、多个参数无返回值

func test2(param1:String,param2:Bool)  {
    print("多个参数参数无返回值函数")
}

调用:test2(param1: "aa", param2: true)

3、多个参数有返回值

func test3(param1:String,param2:Bool) -> String {
    return "多个参数参数有返回值函数";
}

注意:虽然又返回值但是调用的时候可忽略返回值
调用:print(test3(param1: "aa", param2: true))

4、具有多个返回值

func test4(a: Int, b:Int) -> (min: Int, max: Int) {
    if a < b {
        return (a, b)
    } else {
        return (b, a)
    }
}

调用:
let bounds = test4(a: 2,b: 4)
print("min is (bounds.min) and max is (bounds.max)")
oc里面函数是无法做的返回多个值的,但是swift里面增加了元组概念,其实相当于返回一个元组类型的值。

5、可选的元组返回类型

func test5(a: Int, b:Int) -> (min: Int, max: Int) ? {
}

函数是否返回实际的元组值或nil

6、指定参数标签

func test6(p1 param1:String ,p2 param2:String) -> String {
    return param1 + param2;
}

调用:print(test6(p1: "a", p2: "b"))

7、省略参数标签

func test7(_ param1:String ,p2 param2:String) -> String {
    return param1 + param2;
}

调用: print(test7("a", p2: "b"))
对于标签我们可以这样理解,函数参数有两个名字,一个是给内部用的,一个外部调用使用的,内部的参数名字不能省略,外部的可以省略或者用“_”(对外部调用来讲相当于省略)来代替。

8、默认参数值

func test8(_ param1:String ,p2 param2:String = "c") -> String {
    return param1 + param2;
}

调用:
print(test8("a"))
print(test8("a", p2: "b"))
如果不放入第二个参数,函数就使用默认值c,如果给了新参数,函数会使用新给的参数。

9、不固定参数

func test9(_ numbers: Double...) -> Double {
    var total: Double = 0
    for number in numbers {
        total += number
    }
    return total / Double(numbers.count)
}

调用:test9(1, 2, 3, 4, 5)
函数可以具有至多一个可变参数。

10、进出参数

func test10(_ a: inout Int, _ b: inout Int) {
    let temporaryA = a
    a = b
    b = temporaryA
}

调用:
var oneInt = 7
var anotherInt = 14
test10(&oneInt, &anotherInt)
print("oneInt is now (oneInt), and anotherInt is now (anotherInt)")
函数修改参数的值,并且在函数调用结束后这些更改仍然存在.可以通过将inout关键字放在参数类型之前来编写输入输出参数。输入输出参数不能具有默认值,并且可变参数不能标记为inout。不能修改常量和文字。

11、函数类型作为参数类型

func test11(_ mathFunction: (String, String) -> String, _ a: String, _ b: String) {
    print("Result: \(mathFunction(a,b))")
}

调用:test11(test7, "c", "d") //结果是:cd

12、函数类型作为返回类型

func test12(input: Int) -> (String,String) -> String {
    return input > 3 ? test5 : test7
}

调用: print(test12(input: 3)("a","b"))
注意调用的时候需要传两个函数的参数,一个是外部test12参数,还有一个是返回函数的参数

13、函数的嵌套:函数体内可以再定义函数

func test13(a: Int) -> (Int) -> Int{
    func test(b: Int) -> Int{
        return a + b
    }
    return test
}

调用:print(test13(a: 4)(5)) // Returns 9

你可能感兴趣的:(swift函数定义跟调用总结)