美文网首页
[对比OC学习swift]--day05函数

[对比OC学习swift]--day05函数

作者: 一声雷 | 来源:发表于2016-02-26 15:07 被阅读62次

    格式:

    func  函数名称(形式参数1 : 形参类型 ,...)-> 返回值类型
    {
                 // 逻辑代码
    }
    
    // override代表是重写了父类的方法
    override func  函数名称(形式参数1 : 形参类型 ,...)-> 返回值类型
    {
                 // 逻辑代码
    }
    

    一、无参数,无返回值

    // 定义函数
    func say() -> void               
    {
           print("say hello")
    }
    // 函数调用
    say()        
    
    
    
     几种简写形式:func say() -> ()          // void可以简写成:()
                 func say()                // 或是直接省略
    
    
    

    二、无参数,有返回值

    func getNumber() -> Int
    {
             return 998
    }
    print ( getNumber())
    

    如果想要返回多个值,OC中的办法是使用指针来实现,在swift中我们使用的是元祖。

    func getNumber() -> (Int , Int)
    {
             return (1 , 998)
    }
    

    三、有参数,无返回值

    func  sum (num1 : Int , num2 : Int)
    {
           print (num1 + num2)
    }
    sum (10 , num2 : 20)
    // 注意函数调用的这里
    // swift2.0开始,默认将第二个参数名作为外部参数。
    // 从第二个参数开始后面的参数名称作为标签名称。
    
    如何指定标签
    func  sum (Value1  num1 : Int , Value2  num2 : Int)
    {
           print (num1 + num2)
    }
    sum (Value1 : 10 , Value2 : 20)
    // 现在指定标签就是Value1、Value2了
    
    如何忽略指定标签
    func  sum (num1 : Int , _num2 : Int)
    {
           print (num1 + num2)
    }
    sum (10 , 20)
    // 本来默认第二个参数的名称是作为标签的,在参数名前面加了下划线后就忽略了。
    
    常量形参和变量形参(也就是OC中所说的值传递和地址传递)
    • 默认情况下所有的形参都是常量形参,也就是说在函数中修改形参的值,是不会影响外部实参的值。
    • 变量形参,只需在形参名称前面加上inout即可。
    func change(inout  num1 : Int , inout num2 : Int)
    {
           let  temp = num1
           num1 = num2
           num2 = temp
    }
    var n = 10
    var m = 20
    chang(&n , num2:&m)
    // 这步之后 n = 20  ,  m = 10
    
    • inout修饰的参数是var类型的。


      示例
    可变参数
    • 当一个函数不确定接收多少个参数的时候,就可以使用可变参数。
    func sums (numbers : Int... )       // numbers必须制定类型,传入的是同种类型
        {
            var sum = 0
            for number in numbers         // numbers的本质是一个数组
            {
                sum += number
            }
            print(sum)
        }
    sums(1,2,5)
    
    func sums (numbers : Int... , value : Float)
        {
            var sum = 0
            for number in numbers
            {
                sum += number
            }
            print(sum)
            print(value)
        }
     sums(1,2,5, value: 11.3)
    
    参数默认值
    • 可以给形参制定默认值,如果一个形参制定了默认值,那么调用的时候就可以不传递参数的值。如果是传递了参数,就优先使用传入的值。
        func joinString(str1 : String, str2 : String = "哈哈", str3 : String)
        {
            print(str1,str2,str3)
        }
    // 输出:你,我,他
    joinString("你", str2: "我", str3: "他")
    // 输出:你,哈哈,他      
    joinString("你", str3: "我")
    

    四、有参数,有返回值

    func sum( num1 : Int , num2 : Int) -> Int
    {
              return   num1 + num2
    }
    let   a = sum( 20 , mun2:10)
    

    相关文章

      网友评论

          本文标题:[对比OC学习swift]--day05函数

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