美文网首页
swift中函数的几种定义方法

swift中函数的几种定义方法

作者: Alexander | 来源:发表于2019-02-13 15:27 被阅读7次

    前言

    在swft中有几种定义函数方法的方式,需要留意一下几个细节,学会之后在以后编码过程中写起来会更加得心应手和规范,接下来我们用最简单的几个例子来简述一下函数的定义.

    一、常见的定义函数方式:

    1, num1和num2表示的形参的内部函数名
    func sum(num1: Int,  num2: Int) -> Int {
       return num1+num2
    }
    let su = sum(num1:10, num2: 20)
    
    2,在开发过程中往往会给形参设置一个名词, 这样不能大大提高函数的可读性, a和b就是形参的外部函数名
    func sum( a num1: Int, b num2: Int) -> Int {
       return num1+num2
    }
    let su = sum(a: 10, b: 20)
    3,这种方式也是我在开发中常用的一种方式,直接在形参前面使用下划线“_”, 这样就会把函数名直接隐藏掉,有点是可使代码看起来更加简洁,方便
    func sum( _ num1: Int, _ num2: Int) -> Int {
       return num1+num2
    }
    let su = sum(10,  20)
    

    注意:
    函数中定义形参默认是let类型, 所以不能直接去修改形参的值,假如需要修改参数的值,需要使用到inout关键字。

    如:
    错误写法: number默认是let类型,不能直接修改参数的值,这样写会报错
    func sum(number: Int) {
      number += 1
    }
    var num3: Int = 5
    sum(num: &num3) 
    报错:
    error: block.playground:11:9: error: left side of mutating operator isn't mutable: 'num' is a 'let' constant
        num += 3
        ~~~ ^
    
    正确写法:使用关键字 inout 指向的是内存地址, 相当于C语言的&地址符号
    func sum(number:inout Int) {
      number += 1
    }
    var num3: Int = 5
    sum(num: &num3) // 结果是6
    
    

    二、函数的参数不定:

    • 不定参数函数表示函数的形式参数的数量是不定的, 但是每个参数的类型必须是一样的, 不定形参类似是一个数组, 直接用for循环就能获取所有的值
    // ... 表示数量不定, 在循环中表示闭区间
    func sum(_ numbers: Int ...) -> Int {
      var num: Int = 0
        for n in numbers {
            num += n
        }
        return num
    }
    // 调用
    let sumN: Int = sum(1, 2, 3, 4, 5) // 结果15
    
    

    三、为参数设置默认值

    • 在开发中为了防止获取到的数据是空而发生闪退的情况,我们常常都会设置一个默认值, 在swfit中函数的参数也能设置默认值,如:
    func sayHi(_ maleName: String = "大白", _ femaleName: String = "小C") -> String {
        
        return "\(maleName) say hello to \(femaleName)"
    }
    
    sayHi() // 结果:  大白 say hello to 小C
    sayHi("李白") // 结果:  李白 say hello to 小C
    sayHi("W", "Z")// 结果:  W say hello to Z
    

    四、函数嵌套

    • 函数中定义一个或者多个函数
    // 定义枚举
    enum countType: Int {
        
        case diffent = 0
        case mul
    }
    
    // 注意: 这里的返回值是一个函数类型的返回值
    func sum(count: countType) -> ((Int, Int) -> Int) {
        
        // 嵌套的函数1
        func diff(num1: Int, num2: Int) -> Int {
            
            return num2 + num1
        }
        
        // 嵌套函数2
        func mul(num3: Int, num4: Int) -> Int {
            
            return num3 * num4
        }
        
        // 定义一个函数类型的变量: (Int, Int) -> Int 类型
        var myType:(Int, Int) -> Int
        switch count {
            
            case .diffent:
                myType = diff
            case .mul:
                myType = mul
        }
    
        return myType
    }
    
    
    let vim = sum(count: .diffent)
    
    总结

    今天看到一篇文章,心里很是触动,总之吧,不管是哪个行业,都是需要不断地去学习,不断去提高自己的能力。淘汰的一定会是那些安于现状,不愿从舒适圈中走出来的人。所有的东西都要注意细节,着重基础。

    相关文章

      网友评论

          本文标题:swift中函数的几种定义方法

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