美文网首页
Swift函数

Swift函数

作者: 奔跑的鸿 | 来源:发表于2020-06-15 20:10 被阅读0次

    函数定义

    • 格式:func 函数名称(参数名:参数类型, 参数名:参数类型,...) -> 函数返回值 {函数实现部分}

    无参无返回值

    func say()->Void
    {
        print("Hello")
    }
    
    func say1() // 如果没有返回值可以省略"->Void"
    {
        print("Hi")
    }
    
    say()
    say1()
    

    无参有返回值

    func info() -> String
    {
        return "name = hjq, age = 28"
    }
    print(info())
    

    有参无返回值

    func sayWitchName1(name:String, age:Int) -> Void {
        print("hello \(name), I'm \(age) years old")
    }
    sayWitchName1(name: "baobao", age: 20)
    

    有参有返回值

    func info(name:String, age:Int) -> String
    {
        return "name = \(name), age = \(age)"
    }
    print(info(name: "HaRi", age: 26))
    

    函数类型

    • Swift的函数类型是由函数的参数类型和返回值类型组成的,类似于C语言的指向函数的指针,类似于OC语言的block。
    • 可以利用函数类型定义函数变量和常量
    // 这两个函数类型为: (Int, Int) -> Int
    func sum(a: Int, b: Int) -> Int
    {
        return a + b
    }
    func sub(a: Int, b: Int) -> Int
    {
        return a - b
    }
    
    // 可以利用函数类型定义函数变量和常量
    var funcP:(Int, Int) -> Int = sum
    //funcP = sub // 赋与同一类型都可以
    print(funcP(10,20))    //输出30
    funcP = sub
    print(funcP(10,20))    //输出-10
    
    • 函数类型可以作为函数的参数
    func calFunc(a: Int, b: Int, Option:(Int, Int) -> Int) -> Int
    {
        return Option(a, b)
    }
    print(calFunc(a: 10, b: 20, Option: sum))    //输出30
    print(calFunc(a: 10, b: 20, Option: sub))    //输出-10
    
    • 函数类型可以作为返回值
    func max(a: Int, b: Int) -> Int
    {
        return a > b ? a : b
    }
    func min(a: Int, b: Int) -> Int
    {
        return a > b ? b : a
    }
    func chooseFunc(getMax:Bool) -> (Int, Int) -> Int
    {
        return getMax ? max : min
    }
    var funcP2:(Int, Int) -> Int = chooseFunc(getMax: true)
    print(funcP2(10, 20))    //输出20
    

    函数参数

    • 默认参数:在定义函数的时候给某个参数赋值, 当外部调用没有传递该参数时会自动使用默认值
    func joinString2(s1:String ,toString s2:String, jioner s3:String = "默认值") -> String
    {
        return s1 + s3 + s2
    }
    print(joinString2(s1: "hello", toString: "xiaohange"))    //输出:hello默认值xiaohange
    
    • 传递指针:如果想在函数中修改外界传入的参数,需要inout关键字,这会传入参数本身而不是参数的值
    func swap3(a: inout Int,b: inout Int)
    {
        let temp = a
        a = b
        b = temp
    }
    var x1 = 10
    var y1 = 20
    print("交换前 x1 = \(x1), y1 = \(y1)")
    swap3(a: &x1, b: &y1)
    print("交换后 x1 = \(x1), y1 = \(y1)")
    /**
    输出结果:
    交换前 x1 = 10, y1 = 20
    交换后 x1 = 20, y1 = 10
    */
    
    • 变参函数(参数个数不确定):只能放到参数列表的最后一位, 变参必须指定数据类型, 变参只能是同种类型的数据
    func add2(nums:[Int]) -> Int {
        var sum = 0
        for num in nums {
            sum += num
        }
        return sum
    }
    print(add2(nums: [1,2,3]))    //输出6
    
    func add3(nums:Int...) -> Int
    {
        var sum = 0
        for num in nums {
            sum += num
        }
        return sum
    }
    print(add3(nums: 1,2,3))    //输出6
    

    函数参数前的"_"

    • 函数参数前的"_"表示调用时可忽略该参数名称,如下
    func someFunction(_ firstParameterName: Int, secondParameterName: Int) {
         // 在函数体内,firstParameterName 和 secondParameterName 代表参数中的第一个和第二个参数值
    } 
    

    调用方式:someFunction(1, secondParameterName: 2)

    相关文章

      网友评论

          本文标题:Swift函数

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