美文网首页
Swift 基础笔记 - 函数

Swift 基础笔记 - 函数

作者: 其实朕是一只程序猿 | 来源:发表于2016-04-12 22:07 被阅读6次

    函数

    • 函数的定义
    func name(parameters) -> return type {
        function body
    }
    func 函数名(形参名1: 形参类型1, 形参名2: 形参类型2, ...) `->` 返回值 {
      // 代码实现
    }
    
    /*函数如果没有返回值:
          1. 省略
          2. -> Void
          3. -> ()
    
      外部参数名,作用能够方便调用人员更好地理解函数的语义
      带外部参数名的参数列表格式:
          (外部参数名1 形式参数名1: 参数类型1, 外部参数名2 形式参数名2: 参数类型2, ...)*/
    
    
    • 函数定义和调用
    //: 定义函数
    func sum(a: Int, b: Int) -> Int {
      return a + b
    }
    //: 调用函数, b表示外部参数名
    sum(10, b: 20)
    //: 没有返回值
    func sayHello() -> () {
      print("hello")
    }
    sayHello()
    
    
    • 外部参数名

      • 在形参名前再增加一个外部参数名,能够方便调用人员更好地理解函数的语义
      • swift2.0默认帮我们生成除第一个参数外的所有外部参数名
    //: 为什么有外部参数名呢?
    func addStudent(name: String, age: Int, number: Int) {
        print("name = \(name), age = \(age), number = \(number)")
    }
    
    //: 如果没有外部参数名,我们很难判断每个参数的作用
    //addStudent("zhangsan", 54, 53)
    
    //: 有外部参数名,每个参数的作用一目了然,swift2.0默认帮我们生成除第一个参数外的所有外部参数名
    addStudent("zhangsan", age: 54, number: 53)
    
    //: 指定外部参数名
    func addStudent2(stu_name name: String, stu_age age: Int, stu_number number: Int) {
        print("name = \(name), age = \(age), number = \(number)")
    }
    
    addStudent2(stu_name: "zhangsan", stu_age: 54, stu_number: 53)
    
    
    • 函数返回元组类型
    /*:
    在c语言中要返回多个值:
      1.传参数时传入指针,在函数内部修改该指针指向的值
      2.返回一个结构体
      3.返回数组
    */
    //: 在swift中可以通过返回元组来方便的返回多个值
    func getStudent() -> (String, Int, Int) {
      return ("liudehua", 54, 53)
    }
    //: student是一个(String, Int, Int)的元组
    let student = getStudent()
    //: 可以通过.0 .1 来访问
    student.0
    student.1
    //: 函数通过元组返回多个值,并且为元组中的元素取名成,方便调用
    func getStudent2() -> (name: String, age: Int, num: Int) {
      return ("liudehua", 54, 53)
    }
    let student2 = getStudent2()
    student2.name
    student2.age
    
    

    相关文章

      网友评论

          本文标题:Swift 基础笔记 - 函数

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