美文网首页
菜鸡学Swift3.0 10.函数

菜鸡学Swift3.0 10.函数

作者: 菜鸡 | 来源:发表于2016-10-12 17:46 被阅读7次

    1. 函数的定义

    func 函数名(参数)-> 返回值类型 { 函数体 }
    函数名( 参数名:参数值 )
    // 函数的定义 有返回值
    func sayHelloTo (name: String?) -> String {
        return "Hello" + ( name ?? "Guest" )
    }
    var userName: String? = nil
    sayHelloTo (name: userName)
    
    // 函数的定义 无返回值
    func hello () -> Void {
        print("hello")
    }
    hello( )
    

    2. 函数外部参数名和内部参数名

    func 函数名 (外部参数名 内部参数名:参数类型 , 外部参数名 内部参数名:类型) -> 返回类型 { 函数体 }
    函数调用
    函数名 (外部参数名:值 , 外部参数名: 值)
    func mutipleOf (num1 a:Int , num2 b:Int) -> Int {
        return a*b
    }
    mutipleOf(num1: 2, num2: 2)
    

    3. 默认参数值和可变参数值

    默认参数值
    func 函数名 ( 内部参数名:参数类型 = "默认参数值" 其他。。。)
    func sayHelloTo (name: String , say: String = "Hello" , sex: String = "男") ->        String {
        return "\(name) , \(say) , \(sex)"
    }
    sayHelloTo(name: "Jack")
    //Jack,Hello,男
    
    可变参数值
    func 函数名 ( 可变参数名:参数类型 ... ,其他。。。。 )
    func sayHelloTo (names: String ... , say: String = "Hello" , sex: String = "男") {
        for name in names {
            print ("\(name),\(say),\(sex)")
        }
    }
    sayHelloTo(names: "A","B","C")
    //A,Hello,男
    //B,Hello,男
    //C,Hello,男
    

    4. inout 参数 按引用传参

    按引用传参 (可以改变参数在内存里的值而不是按值传入产生一个拷贝)
    函数名(参数名: &变量名, 参数名: &变量名)
    func swapTwoInts ( a: inout Int , b: inout Int){
        //交换两个参数的值
        (a , b) = (b , a)
    }
    var x = 10
    var y = 20
    swapTwoInts(a: &x, b: &y)
    x //20
    y //10
    

    5. 使用函数类型

    函数型变量声明类型 --- var 函数名: ( 参数类型 , 参数类型 , ... ) -> 返回类型
    func add (a: Int , b: Int) -> Int {
        return a + b
    }
    //函数型变量声明类型 (这里把函数当做变量用)
    var addTwo:(Int,Int) -> Int = add
    addTwo (2,3)
    
    函数型变量的使用(把函数当做变量使用) (by: 函数变量名)
    var arr = [12,33,21,55,78]
    func isFirstNumber (a:Int , b:Int) -> Bool {
        return a > b
    }
    arr.sort(by: isFirstNumber) //[78, 55, 33, 21, 12]
    

    6. 返回函数类型和函数嵌套

    // 第一种计算方法
    func Tweight1 ( weight: Int) -> Int {
        return 1 * weight
    }
    // 第二种计算方法
    func Tweight2 ( weight: Int) -> Int {
        return 3 * weight
    }
    
    func fee ( price: Int , weight: Int) -> Int {
    // 嵌套函数
    // 判断使用哪一种计算方法 并且以函数作为返回值
        func choose ( weight: Int) -> (Int) -> Int {
            return  weight <= 10 ?  Tweight1 :  Tweight2
        }
    // 把choose(参数名:参数值)赋值给 abc函数型变量
    let abc = choose(weight: weight)
    // 返回 choose已经判断用第一种计算方法赋值给abc函数变量,abc函数变量参数是3用第一种计算方式去计算,结果是3,加上 price * weight 结果6,最终相加结果是9
    return (abc(weight) + price * weight)
    }
    
    fee (price: 2,weight: 3)

    相关文章

      网友评论

          本文标题:菜鸡学Swift3.0 10.函数

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