- 当没有定义返回值时候,其实也是反回了一个空元组return ()
- 数组通过中括号中的下标访问
- 字典通过中括号中的key访问
- 元组通过点后边跟下标或者key访问
- 默认值参数
- 默认值参数要放到后边,把没有默认值的参数放到前边。
- 默认值参数函数在调用时候可以不赋值,这时候会用默认值。也可以赋值,用我们赋的值。
func hello(person: String, age: Int = 18){
print("hello \(person) And age: \(age)")
}
hello(person: "小明")
hello(person: "小王",age: 24)
- 不定参数
如果函数中有了一个不定参数了,那么后变的参数一定要明确(不能省略标签,不能有不定形式)
//不定参数举例
func variadic(_ numbers: Int...) -> Double{
var total = 0.0
for number in numbers{
total += Double(number)
}
return total/Double(numbers.count)
}
print(variadic(1,2,3,4,5,6,7,8,9))
// 一旦有一个不定参数了,那么后边的参数一定要明确(要有标签,参数不能有不定参数类型了)
//有一个不定参数了,后边参数又是不定的 就报错
func go(_ a: Int..., b: Int...){
}
//有一个不定参数了,后边参数省略了标签 就报错
func test(_ a: Int..., _ b:Int){
}
- 输入输出参数
输入输出参数允许传入参数地址,在函数内部改变函数外部变量的值
输入输出参数是函数对函数体外产生影响的另一种方式。
func change(changeA: inout Int, changeB: inout Int){
let temp = changeA;
changeA = changeB;
changeB = temp
}
var a = 4
var b = 5
change(changeA: &a, changeB: &b)
print("a = \(a), b = \(b)")
-
函数的类型
函数的类型指的是 函数的参数类型 + 返回值类型 -
函数类型作为变量,参数,返回值
var a = 3
var b = 10
func change(changeA: inout Int, changeB: inout Int){
let temp = changeA;
changeA = changeB;
changeB = temp
}
//1. 函数类型 作为变量
var aFunc: (inout Int, inout Int) -> () = change;
aFunc(&a, &b)
print("a = \(a), b = \(b)")
//2. 函数类型 作为参数
//2.1 传入一个函数
func bFunc(funcLab: (inout Int, inout Int) -> (), _ a: inout Int, _ b: inout Int){
return funcLab(&a, &b)
}
bFunc(funcLab: aFunc, &a, &b)
print("a = \(a), b = \(b)")
//2.2 传入一个代码块作为函数类型参数
bFunc(funcLab: { (a, b) in
let temp = a
a = b
b = temp
}, &a, &b)
print("a = \(a), b = \(b)")
//2.2 作为回调用
func cFunc(a: Int, b: Int, sum: (Int) ->()){
let temp = a + b
sum(temp)
}
cFunc(a: a, b: b) { (sum) in
print(sum)
}
//3. 函数类型 作为返回值类型
func addOne(a: Int) -> Int{
return a + 1
}
func subOne(a: Int) -> Int{
return a - 1
}
func selectOneFunc(value: Bool) -> (Int) -> Int{
if value == true {
return subOne(a:)
}else{
return addOne(a:)
}
}
var temp = 10
while temp > 0 {
let aFunc = selectOneFunc(value: temp > 0)
temp = aFunc(temp)
print("temp = \(temp)")
}
- 嵌套函数
- 我们在类里写的都是全局函数
- 当我们在一个函数内部在写一个函数时候,那么这就是嵌套函数
- 嵌套函数的内部函数只能被这个外围函数调用