swift函数

一 定义

//有返回值
func name(a: Int,b: Int) -> return type {
    function body
}
//无返回值
func name()  {
    function body
}
//可选返回值
func somef() -> Int? {
    
}

二 外部参数名

就是调用时候的参数名称和函数内部使用时候的名称不同,但是同一变量。
省略情况下,外部和内部用同一个名字。

//这个from是外部参数名,hometown是内部名
func someFunction(name: String,form hometown: String) {
    print("\(name) 来自 \(hometown)");
}

someFunction(name: "aa", form: "china")

三 忽略参数名

//正常情况
func someFunction(name: String,hometown: String) {
    
}
someFunction(name: "cluo", hometown: "putaoya")

//忽略参数名的情况
func someFunction2(_ name: String,hometown: String) {
    
}
//主要区别在这里第一个参数没有name字样了。
someFunction2("meixi", hometown: "agenting")
注意:如果没有接收函数的返回值,会得到一个警告。通过在函数上面添加@discardableResult可以去除警告

四 忽略返回值

func printAntCount(string: String) -> Int {
    print(string);
    return string.count;
}
//swift中如果没有使用函数的返回值,会得到一个警告。使用_消除警告。
let _ = printAntCount(string: "hello ,world")

五 多个返回值

//其实就是返回元组类型

func mainMax(array: [Int]) -> (min: Int,max: Int) {
    var currentMin = array[0];
    var currentMax = array[0];
    for  value in array {
        if value < currentMin {
            currentMin = value;
        } else if value > currentMax {
            currentMax = value;
        }
    }
    return (currentMin,currentMax);
}
let testArr = [1,10,5];
print(mainMax(array: testArr));

六 默认参数值

//paramb不传的时候默认10

func someFunction(parama: Int,paramb: Int = 10) -> Int {
    return parama + paramb;
}
print(someFunction(parama: 2,paramb: 5));
print(someFunction(parama: 2));

七 可变参数

//可变参数
func pingJunZhi(numbers: Double...) -> Double {
    var totla: Double = 0;
    for number in numbers {
        totla += number;
    }
    return totla / Double(numbers.count);
}
print(pingJunZhi(numbers: 1,2,3,4,5));

八 输入输出参数

//swift中默认情况下函数的参数都是常量(即:不可以修改),这是swift为了避免在函数内部不小心修改了函数外部变量.
//但是有时候确实需要修改外部变量的时候,声明时候需要在参数类型前面加关键字 inout. 并且调用时候参数前加 &

var a = 10;
//声明时加  inout
func change(param: inout Int) {
    param = 12;
}

//调用时加 &
change(param: &a);
print(a);

九 函数类型

swift的每个函数都有种特定的函数类型,函数的类型由函数的参数类型和返回类型组成。
如:下面这个addTwoNumers函数的类型是:

(Int, Int) -> Int 这个类型和 Int,String等类型是一样的,可以用来定义变量,定义函数的参数类型,作为函数的返回类型。
func addTwoNumers(a: Int,b: Int) -> Int {
    return a + b;
}
//定义函数类型变量
var matchFunction: (Int,Int)->Int;
matchFunction = addTwoNumers(a:b:);

//定义函数参数类型
func otherFunction(f: (Int,Int)->Int,parama: Int,paramb: Int) -> Int {
    return f(parama,paramb);
}
let res = otherFunction(f: matchFunction, parama: 2, paramb: 4);
//作为函数返回类型
func stepForward(_ input: Int) -> Int {
    return input + 1
}
func stepBackward(_ input: Int) -> Int {
    return input - 1
}
func chooseStepFunction(backward: Bool) -> (Int) -> Int {
    return backward ? stepBackward : stepForward
}

//嵌套函数
func chooseStepFunction(backward: Bool) -> (Int) -> Int {
    func stepForward(input: Int) -> Int { return input + 1 }
    func stepBackward(input: Int) -> Int { return input - 1 }
    return backward ? stepBackward : stepForward
}

你可能感兴趣的:(swift函数)