美文网首页swift
swift——函数

swift——函数

作者: 阿凡提说AI | 来源:发表于2017-02-26 16:56 被阅读14次

    函数的定义和调用

    1.函数的定义

    fun 函数名(参数名1:参数类型,参数名2:参数类型...)->返回值类型{
            函数体...
            return 返回值
    }
    

    示例代码:

    fun sum(x:Int,y:Int)->Int{
            return x+y
    }
    

    2.函数的调用

    函数名(参数名1:值1,参数名2:值2...)
    

    示例代码

    sum(x:10,y:20)
    

    函数的参数和返回值

    1.无参函数

    fun sayHelloWorld()->String {
            return "Hello,World!"
    }
    print(sayHelloWorld())
    

    尽管这个函数没有参数,但是定义和调用函数时,函数后面的圆括号是不能省略的。
    2.多参数函数

    fun sum(x:Int,y:Int)->Int{
            return x+y
    }
    

    3.无返回值参数
    无参数返回值的格式比较随意,可以在箭头后面跟着Void或者小括号,也可以直接省略箭头及后面的内容。

    func test1() {
        print("哈哈")
    }
    
    func test2()->Void {
          print("呵呵")
    }
    
    func test3()->(){
          print("嘻嘻")
    }
    
    test1()
    test2()
    test3()
    

    4.多返回值函数
    使用元组类型作为函数的返回值,可以让多个值作为一个复合值返回。

    fun count(string:String)->(vowels:Int,consonants:Int,others:Int){
            var vowels = 0,consonants = 0,others = 0
             for character in string.characters{
                      switch String(character).lowercased(){
                              case "a","e","i","o","u": // 元音
                              vowels += 1
                              case "b","c","d","f","g","h","j","k","l","m",
                              "n","p","q","r","s","t","v","w","x","y","z": // 辅音
                                consonants += 1
                                default:
                                  others += 1
                       }
            }
            return(vowels,consonants,others)
    }
    let total = count(string:"hello world")
    print("\(total.vowels)个元音字母和\(total.consonants)个辅音字母")
    

    如果函数返回的元组类型可能整个元组都没有值,那就可以使用可选的元组返回类型来反应元组是nil的事实,通过在元组类型的右括号后面防止一个问号来定义一个可选数组,如(Int,Int)?。

    局部变量名和外部参数名

    1.局部参数名

    func someFunction(firstParameterName:Int,secondParameterName:Int){
            // 函数体
    }
    
    someFunction(firstParameterName:1,secondParameterName:2)
    

    2.外部参数名

    fun 函数名(外部参数名1  参数名1:参数类型,外部参数2 参数名2:参数类型...)-> 返回值类型{
            函数体...
            return 返回值
    }
    

    所谓外部参数名,是指在参数名的前面再添加一个参数名。

    fun compare(num1 x:Int,num2 y:Int)->Int{
            return x>y?x:y
    }
    compare(num1:10 num2:20)
    

    函数参数的其他用法

    1.默认参数值
    给参数定义一个默认值作为函数定义的一部分,如果已经定义了默认值,调用该函数时就能够省略这个参数。

    fun sayHi(message:String,name:String = "小明"){
            print("\(name),\(message)")
    }
    
    sayHi(message:"欢迎来到杭州")                         // 输出小明
    sayHi(message:"欢迎来到杭州",name:"小芳")  // 输出小芳
    

    Swift中带有默认值的参数是有外部参数名的,如果要忽略的话,将name改成下划线即可。
    2.可变参数
    一个可变参数可以接受零个或者多个指定类型的值。函数调用时,使用可变参数来指定函数参数可以被传入不确定数量的输入值,通过在变量类型名后面加入‘...’的方式来定义可变参数。
    3.In-Out(输入输出)参数
    一般参数仅仅是在函数内可以改变的,当这个函数执行完后变量就会被销毁,如果想要通过一个函数可以修改参数的值,并且让这些修改在函数调用结束后仍然存在,这时可以将这个参数定义为输入输出参数即可。定义一个输入输出函数时,只要在参数类型前面加上inout即可。

    func swapTwoInts(a: inout Int,b: inout Int){
        let temporaryA = a
        a = b
        b = temporaryA
    }
    

    在上诉代码中,swapTwoInts函数用于交换a和b的值。调用该函数,代码如下:

    var someInt = 3
    var anotherInt = 107
    swapTwoInts(a:&someInt,b:&anotherInt)
    

    inout修饰的参数是不能有默认值的,也不能是有范围的参数集合,另外,一个参数一旦被inout修饰,就不能在被let 修饰了。

    嵌套函数

    前面定义的函数都是全局函数,它们定义在全局作用域中,除此之外,还可以把函数定义在其它函数体内,成为嵌套函数。默认情况下,嵌套函数是对外界不可见的,但是可以被其被外围函数所调用。

    相关文章

      网友评论

        本文标题:swift——函数

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