Swift 函数

2018-03-16  本文已影响0人  BearClawr

函数

函数是执行特定任务的一段代码,并指定了一个函数名,在需要的时候可以多次调用这个代码。

函数的定义和调用

Swift 使用 func 关键字来定义函数,具体格式如下:

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

注意:

  1. func:表示函数的关键字
  2. 函数名:表示函数的名称,用来简要地描述函数的功能
  3. 参数名:用于接收调用函数时传入的数据
  4. 参数类型:用来限定调用函数时传入参数的数据类型
  5. 返回值类型:用于限定函数返回值的数据类型

有哪几种函数

无参函数

func sayHelloWorld() -> String {
    return "Hello World!"
}

多参函数

func sayHelloWorld(name: String, alreadyGreeted: Bool) -> String {
    if alreadyGreeted {
        return "Hello again,\(name)"
    } else {
        return "Hello,\(name)"
    }
}

print(sayHelloWorld(name: "Tom", alreadyGreeted: true))

无返回值函数

func test1() {
    print ("嘻嘻")
}

func test2() -> Void {
    print ("嘻嘻")
}

func test3() -> () {
    print ("嘻嘻")
}

多返回值函数

func 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: "welcome to itcast")
print("\(total.vowels)个元音字母和\(total.consonants)个辅音字母!")

局部参数名和外部参数名

局部参数名

只能在函数本身的主体中使用,无法在调用时使用,这种参数类型名称称为局部参数名。

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

外部参数名

所谓外部参数名,是指参数名的前面再增加一个参数名。如果为参数指定了外部形参
名,调用的时候就必须显式地使用,下面是带有外部参数名的基本格式:

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

函数参数的其他用法

  1. 默认参数值
func sayHi(message: String, name: String = "小明") -> Void 
{
    print("\(name),\(message)");
}
  1. 可变参数
func arithmeticMean(numbers: Double) -> Double {
    var total: Double = 0
    for number in numbers {
        total += number
    }
    return total / Double(numbers.count)
}
print(arithmeticMean(numbers: 1, 2, 3, 4, 5))
  1. In-Out(输入输出)参数:可以在函数内修改参数值,并且在函数外使用。
func swapTwoInts(a: inout Int, b: inout Int) {
    let temporaayA = a
    a = b
    b = temporaayA
}

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

嵌套函数

嵌套就是指写在函数里的函数。

func calculate(opr: String) -> (Int, Int) -> Int {
    // 定义加法函数
    func add(a: Int, b: Int) -> Int {
        return a + b
    }
    
    // 定义减法函数
    func sub(a: Int, b: Int) -> Int {
        return a - b
    }
    
    var result: (Int, Int) -> Int 
    switch opr {
        case "+":
        result = add
        case "-":
        result = sub
        default:
        result = add
    }
    retrun result
}
上一篇下一篇

猜你喜欢

热点阅读