swift

swift——函数

2017-02-26  本文已影响14人  阿凡提说AI

函数的定义和调用

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 修饰了。

嵌套函数

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

上一篇 下一篇

猜你喜欢

热点阅读