Swift 中函数的用法


        func 函数名(形参列表) -> 返回值类型  {
        // 函数体...
        }
        */
        
        //参数为两个int 类型 , 返回值为int类型
        func sum(num1:Int, num2: Int) -> Int{
            
            return num1 + num2
        }
        
        let c : Int = sum(12, num2: 3)
        
        print("这是------\(c)")

        //没有返回值(3种写法)
        
        func sum1(num1 : Int, num2 : Int) -> Void{
            
            
        }
        
        func sum2(num1: Int, num2 : Int) -> (){
            
        }
        
        func sum3 (num1 : Int, num2 : Int){
            
        }
        
        //没有形参,括号也不能省
        func sum4() -> Void{
            
        }
        
        //函数可以返回元组数据
        
        func people(index : Int) -> (name : String, age : Int){
            
            if index == 1 {
                return ("张三", 20)
            } else {
                
                return ("其他人", 0)
            }
            
        }
        
        print("这个人是\(people(1))")
        
        let p1 = people(1)
        print("p1的名字是\(p1.name), p1的年龄是\(p1.age)")
        
        /*func 函数名(外部参数名 形式参数名: 形式参数类型) -> 返回值类型  {
        // 函数体...
            }*/
//        
//        func result(stu_name name: String, stu_age age: Int, stu_score score: Double){
//            
//            print("name = \(name), age = \(age), score = \(score)")
//            
//        }
//        
//    result(stu_name: "hiahia", stu_age: 12, stu_score: 43.3)
      
        //使用#简化外部参数名(现在已经不再用了)
        
//        func result(name: String, age: Int, score: Double){
//            
//            print("name = \(name), age = \(age), score = \(score)")
//            
//        }
//
//        result("werqr", age: 22, score: 32.1)
        
        //默认参数值, 会自动打印出来默认值
        
//        func result(stu_name name: String, stu_age age: Int = 20, stu_score score: Double){
//            
//            print("name = \(name), age = \(age), score = \(score)")
//            
//        }
//
//        result(stu_name: "name", stu_score: 32.1)
        
        //在带有默认参数值的参数名前加个下划线 _ ,调用函数时就不用写外部参数名

//        func result(stu_name name: String, _ age: Int, stu_score score: Double){
//            
//            print("name = \(name), age = \(age), score = \(score)")
//            
//        }
//
//        result(stu_name: "321", 12, stu_score: 33.3)
        
        //默认情况下,函数的参数都是常量参数,不能在函数内部修改,如果需要在内部修改,需要加var修饰

        func append(var str: String, supplix : String, num: Int) -> String{
            
            
            for _ in 1...num{
                
                str += supplix
                
            }
            
            return str
            
        }
        
       let str1 = append("xiaoming", supplix: "66666", num: 2)
        
        print(str1)
        
        /*
        在C语言中,利用指针可以在函数内部修改外部变量的值
        在Swift中,利用输入输出参数,也可以在函数内部修改外部变量的值
        inout 输入输出参数,顾名思义,能输入一个值进来,也可以输出一个值到外部
        
        传递实参时,必须在实参的前面加上&
        不能传入常量或者字面量(比如10)作为参数值(因为它们都不可改)
        输入输出参数不能有默认值
        输入输出参数不能是可变参数
        输入输出参数不能再使用let、var修饰(inout和let、var不能共存)

        */
        
//        func swap(inout num1: Int, inout num2: Int){
//            
//            let temp = num1
//            num1 = num2
//            num2 = temp
//            
//        }
//        
//        var a = 12
//        var b = 56
//        swap(&a, num2: &b)
        
        //函数类型 (int, int) -> ()
        //可以利用函数类型来定义变量
        
        func sum11(num1: Int, num2: Int) -> Int {
            return num1 + num2
        }

        let fn : (Int, Int) -> Int = sum11
        
        let ss = fn(10, 20)
        print(ss)
        

        //函数也可以作为参数
        
        func printResult(fn : (Int, Int) -> Int, num1: Int, num2: Int){
            
            print("-----%d", fn(10, 20))
            
        }
        
        //函数也可作为返回值
        //函数重载: 函数名相同,类型名不同
        //嵌套函数, 全局函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值