美文网首页iOS学习笔记iOS程序猿
swift函数定义跟调用总结

swift函数定义跟调用总结

作者: 懂得_sniper | 来源:发表于2019-07-12 16:12 被阅读3次

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函数定义跟调用总结

    swift提供了大量方便快捷的定义方式,今天在这里做一个总结。1、无参数无返回值函数 调用:test1() 2、多...

  • OC 和Swift 互相调用

    一、OC调用swift文件 二、swift调用OC文件 三、注意和总结 添加: 四、自定义桥接文件 一、OC调用s...

  • Swift使用(三)函数定义、函数重载、函数类型、高阶函数

    Swift函数和闭包 函数定义 首先看一个函数的定义。其中a,b是参数标签,调用函数时需要加上参数标签 可以使用“...

  • Swift学习笔记(二)

    Swift函数 Swift函数包含参数类型和返回值类型 函数定义 Swift使用关键字func定义函数。 函数定义...

  • Swift 调用 Objective-C 的可变参数函数

    Swift 调用 Objective-C 的可变参数函数 Swift 调用 Objective-C 的可变参数函数

  • Swift的闭包调用

    简单记录一个Swift的闭包调用问题 声明如下: 定义了如下的函数去调用该typealias 那么,在具体调用这个...

  • swift函数(一)

    swift和OC的函数天差地别,OC的方法类型与书写方式和调用方式都与swift不一样。 1. 函数的定义 swi...

  • javascript 变量提升

    源代码 效果等同 总结 变量定义提升,只提升定义,不会初始化值 函数定义时,直接进行函数定义函数可以调用,变量赋值...

  • Python 面向对象之第一回合

    一个简单的小案例 函数版用例 面向对象用例 总结 对比:函数: 定义简单/调用简单面向对象: 定义复杂/调用复杂,...

  • Swift:函数

    一、函数定义与调用 语法 二、函数参数与返回值 函数参数与返回值在Swift中非常的灵活, 你可以定义任何类型的函...

网友评论

    本文标题:swift函数定义跟调用总结

    本文链接:https://www.haomeiwen.com/subject/fpvekctx.html