Swift笔记<八>函数的基本使用

函数的介绍
  • 函数相当于OC的方法
  • 函数格式
    • func 函数名(参数列表) →返回值类型{代码块retuan 返回值}
    func add(num1:Int,num2:Int)→Int{
    return num1+num2
    }
    
    • 无参数无返回值
     // ():空的元祖
    func add()→Void{
    return
    }
    //或则
    func add()→(){
    return
    }
    //或则
    func add() {
    return
    }
    
    • 有参数无返回值
    func add(num:Int){
    return
    }
    
    • 无参数有返回值
     func add() →Int{
     return 100
     }
    
    • 有多个返回值的函数(返回元祖)
    func getPerson() →(name:String,age:Int){
    return("张三",3)
    }
    
函数的使用注意
  • 外部参数和内部参数
    • 函数内部的参数即内部参数,外部的参数即外部参数
    func add( num1:Int , num2:Int){
    print(num1+num2)
    } 
    
    //外部忽略参数,修改外部参数
    //前面加另外参数即修改外部参数 ;加_即忽略
     func add( _ num1:Int , abc num2:Int){
     print(num1+num2)
     } 
    
  • 默认参数
    • 某些情况,如果没有传入具体的参数,可以使用默认参数
    • 如果使用默认值,那么函数的接受参数可以是必传参数和可传参数的任意组合
    • 应用 :接口升级保证接口的兼容性
    如果外界没有传递参数,那么取默认值
    func addNum(num1:Int,dis:Int =0)→Int{
    return num1+dis
    }
    
  • 可变参数
    • 格式 : 类型...
    • 函数内部把这个参数当做数组来处理,函数外部直接可以传递多个值
      func add(_ nums :Int...) → Int{
      var result = 0
      for num In nums{
      result += num
      }
      }
      add(1,2,3,4)
    
  • 在函数内部,默认接收到的参数被赋值给一个常量,如果想要改变需要在函数内部使用var修饰
 func change(num :Int){
 var num = num
 num = 3
}
let a =0
change(num:a)
  • 指针的传递
    • 默认情况下函数的参数是值传递,如果想改变外面的变量,则需要传递变量的地址
    • 必须是变量,因为需要在内部改变其值
    • swift 提供的inout关键字可以实现
  func chang(num :inout Int){//指针(地址)的传递
   num = 3
 }
 var b = 0
  change(num:&b)
  • 函数的嵌套使用
    • 函数中包含函数,但是不推荐使用
  func text(){
           func text2(){
           }
  } 
函数的类型
  • 函数类型: 参数类型和返回值类型
 func add(num:Int,num2:Int)→ Int{
 return num +num2
 }
 //函数类型为(Int,Int)→Int
 func jian(num:Int,num2:Int)→ Int{
 return num -num2
 }
  • 用途:可以作为另一个函数的参数/返回值
    //作为参数
    func exec(n1:Int,n2:Int,fun:(Int,Int) →Int){
    let result = fun(n1,n,2)
    print(result)
    }
    exec(n1:6,n2:8,fun:add)
    //作为返回值
    func getFunc(name:String) →(Int,Int) →Int{
       if name=="add"{
           return add
       }   
       return jian
    }
    
  • 编译器如何区分不同函数
    • 靠函数名称
    • 外部参数名称
    • 参数类型+返回值类型 = 函数类型
    func text(a:Int){
    }
    func text(b:Int){
    }
    //以上为两个不同函数,外部参数不同
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容