美文网首页
Swift函数的介绍

Swift函数的介绍

作者: 农夫_三拳 | 来源:发表于2019-06-13 19:14 被阅读0次
    //: Playground - noun: a place where people can play
    
    import UIKit
    
    var str = "Hello, playground"
    
    /*
    
    在学习函数之前我们先来了解一下什么是函数,函数在oc语言中的体现
    
    /* Swift 函数  */
    
    函数的介绍
    
    函数相当于oc中的方法
    
    函数的格式如下:
    
    func 函数名(参数列表) -> 返回值类型{
    
    代码块
    
    return 返回值
    
    }
    
    func 是关键字,多个参数列表之间可以用逗号(,)分离,也可以没有参数
    
    使用箭头“->”指向返回值类型
    
    如果函数没有返回值,返回值为void 并且“->返回值类型“部分可以省略
    
    */
    
    //  1 没有参数  没有返回值的 func
    
    func about()->Void{
    
    print("xixihahahahha")
    
    }
    
    //  调用函数
    
    about()
    
    //  简单写法  如果没有返回值,void可以写成()
    
    func about2()->(){
    
    print("我又来了")
    
    }
    
    about2()
    
    // 3:如果没有返回值,后面的内容可以都不写
    
    func about3(){
    
    print("我什么都没有")
    
    }
    
    // 4  有参数但是没有返回值
    
    func callPhone(phoneNum: String){
    
    print("我的电话号码")
    
    print(phoneNum)
    
    }
    
    callPhone(phoneNum: "+86  159 7029")
    
    // 5 没有参数  但是有返回值的这种
    
    func readMessage()-> String{
    
    return "要去看书啦";
    
    }
    
    readMessage()
    
    var strr = readMessage()
    
    print(strr)
    
    // 5 有参数,有返回值的这种类型
    
    func myName(name: String ,age : String)->String{
    
    return name + age
    
    }
    
    myName(name: "songxinzhe", age: "24")
    
    /*
    
    函数的使用注意
    
    注意一:外部参数和内参数
    
    在函数内部可以看到的参数,就是内部参数
    
    在函数外面可以看到的参数,就是外部参数
    
    默认情况下,从第二个参数开始,参数名称即是内部参数也是外部参数
    
    如果第一个参数也想要有外部参数,可以设置标签:在变量名前加标签即可
    
    如果不想要外部参数,可以在参数名称前加_
    
    */
    
    //  num1 和a是外部参数的名称
    
    func ride(num1 :Int ,a num2 : Int,b num3 :Int)->Int{
    
    return num1 * num2 * num3
    
    }
    
    var result1 = ride(num1: 20, a: 4, b: 5)
    
    //  方法的重载机制:  方法名称不同,但是参数不同,可以称为方法的重载
    
    func ride2(num1:Int, _ num2 :Int)-> Int{
    
    return num1 * num2
    
    }
    
    var result2 = ride2(num1: 20, 10)
    
    /*
    
    注意二: 默认参数
    
    某些情况,如果没有传入具体的参数,可以使用默认参数
    
    */
    
    func makecoffee(type : String = "拿铁")-> String{
    
    return "制作一杯\(type)饮料"
    
    }
    
    let coffee1 = makecoffee(type: "毛屎咖啡")
    
    let coffee2 = makecoffee()
    
    /*
    
    注意三: 可变参数
    
    swift中函数的参数个数可以变化,它可以接受不确定数量的输入类型参数
    
    它们必须具有相同的类型
    
    我们可以通过在参数类型名后面加入(...)的方式来指示这是可变参数
    
    */
    
    func sum(numbers :Double...)-> Double{
    
    var total: Double = 0
    
    for number in numbers{
    
    total += number
    
    }
    
    return total
    
    }
    
    sum(numbers: 100.0,20,10,50)
    
    sum(numbers: 30,80)
    
    /*
    
    注意四: 引用类型(指针的传递)
    
    默认情况下,函数的参数是值传递.如果想改变外面的变量,则需要传递变量的地址
    
    必须是变量,因为需要在内部改变其值
    
    Swift提供的inout关键字就可以实现
    
    对比下列两个函数
    
    */
    
    // 函数一:值传递
    
    func swap( a : Int, b : Int) {
    
    var b = b
    
    var a = a
    
    let temp = a;
    
    a = b;
    
    b = temp
    
    print("a:\(a), b:\(b)")
    
    }
    
    var a = 20
    
    var b = 10
    
    swap(a: a, b: b)
    
    print("a:\(a),b\(b)")
    
    // 函数二:指针的传递
    
    func swap1( a : inout Int, b : inout Int) {
    
    let temp = a
    
    a = b
    
    b = temp
    
    print("a:\(a), b:\(b)")
    
    }
    
    swap1(a: &a, b: &b)
    
    print("a:\(a), b:\(b)")
    
    /*
    
    函数的嵌套使用
    
    swift中函数可以嵌套使用
    
    即函数中包含函数,但是不推荐该写法
    
    */
    
    //  函数的嵌套
    
    let value = 55
    
    func test(){
    
    func demo(){
    
    print("demo\(value)")
    
    }
    
    print("test")
    
    demo()
    
    }
    
    test()//执行函数会先打印'test',再打印'demo'
    

    相关文章

      网友评论

          本文标题:Swift函数的介绍

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