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];
forvalue 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函数】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
}
推荐阅读
- 一个人的旅行,三亚
- 一个小故事,我的思考。
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 开学第一天(下)
- 一个人的碎碎念
- 2018年11月19日|2018年11月19日 星期一 亲子日记第144篇
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育
- 第326天
- Y房东的后半生14
- 奔向你的城市