-函数:
** 函数的参数的注意事项:**
1.忽略外部参数名
如果开发者不想第二个及后续的参数设置参数名,可以使用下一个下划线 (_) 来代替一个明确的参数名。
func sum(value:Int,_ value2:Int) -> Int {
return value + value2
}
sum(value: 234, 343)
2.为参数设置默认值
开发者可以再函数体中为每个参数定义默认值(Deafult Values)。当默认值定义完后,调用这个函数时可以忽略这个参数。
func printInt(Start:Int=0,end:Int=5) {
for i in Start ..< end {
print(i)
}
}
printInt()
输出结果:
0
1
2
3
4
3.可变参数
使用可变参数,可以是一个参数接受零个或多个指定类型的值。设定一个可变参数需要在参数类型名后添加 “...”。
例:求几个数的平均值的功能。
func average(num:Double...){
var total : Double = 0
for i in num {
total += i
}
print(total/Double(num.count))
}
average(num: 1,2,3,4,5,6)
average(num: 10,20,30)
输出结果:
3.5
20.0
4.输入-输出参数
如果开发者想用一个函数来修改参数的值,并且想让这些变化在函数调用后仍然有效。这时,需要定义输入-输入参数。他的定义是通过在参数名前加 inout 关键字。
func 函数名(inout 参数名:数据类型, ......){
...... ......
}
输入-输出参数都有一个传递给函数的值,将函数修改后,再从函数返回来替换原来的值。
函数(&参数,......)
其中,参数前面加上 & 运算符。
func swapTwoInt( num1: inout Int, num2: inout Int) {
let temp = num1
num1 = num2
num2 = temp
}
var value1 = 6
var value2 = 8
print("交换前")
print("value1 = \(value1)")
print("value2 = \(value2)")
print("交换后")
swapTwoInt(num1: &value1,num2: &value2)
**函数的返回值**
1. 具有返回值
func 函数名(参数列表)-> 返回值 {
return 表达式
}
2. 具有多个返回值
函数有多个返回值 这时候需要用到 元组类型 。
例:
func maxVaule(value1:Int,value2:Int,Value3:String,Value4:String) -> (Int,String) {
var maxInt = 0
var maxString : String
// 判断哪个整数最大
if value1<value2 {
maxInt = value2
}else{
maxInt = value1
}
// 判断两个字符串哪个大
if Value3<Value4 {
maxString = Value4
}else{
maxString = Value3
}
return (maxInt,maxString)
}
print(maxVaule(value1: 5, value2: 1, Value3: "Hello", Value4: "Swifts"))
输出:
(5, "Swifts") // 元组
** 函数类型**
1. 使用函数类型作为参数
例:
// 两个数相加
func add(a:Int,b:Int) -> Int {
return a + b
}
// 两个数相乘
func multiply(a:Int,b:Int) -> Int {
return a * b
}
// 输出结果
func printResult (fun:(Int,Int) -> Int, a:Int, b:Int){
print(fun(a,b))
}
printResult(fun: add, a: 4, b: 5)
输出 : 6
2.使用函数类型作为返回值类型
func 函数名(参数列表)-> 函数类型 {
....
}
** 函数的嵌套 **
1、 嵌套调用
在函数里调用其他函数
2、递归调用
在调用函数的过程中调用了该函数本身。