<span style="font-size:18px;">// 不确定参数个数 参数个数可变
func count2 (numbers:Int...) ->Int
{
var sum = 0
// 不确定个数的参数,作为数组使用
for num in numbers {
sum += num
}
return sum
}
count2(1,2,3,4,5,6)
// 参数在函数体内默认是不可变的
func count3 (var a:Int, b:Int) -> Int {
// a = a + b
a++
// b++
return a
}
var c = 22
c = count3(c, b: 0)
c
// inout修饰参数 将外部变量的地址传进来,从而改变外部变量的值
func changeValue (inout a: Int)
{
a++
}
changeValue(&c)
c
</span>
<span style="font-size:18px;">// 函数嵌套:函数作用域中定义了另一个函数,内层函数的作用域可以使用外层函数的参数
func helloLanou(var num: Int)
{
num++
func hello23()
{
num++
}
hello23()
num
}
helloLanou(10)
// 函数的返回值是嵌套的函数
// 函数类型 参数int 返回值为String
func hellolanou2() -> ((Int) -> String)
{
func hanshu(i:Int) -> String
{
return "\(i)"
}
return hanshu
}
hellolanou2()
let hanshu = hellolanou2()
let i = hanshu(1)
// 声明一个函数,实现功能:传入"+"-"*"/"的字符串,返回对应得运算的函数"+"---返回int + int = int
// 参数string 返回值是int的函数
// 函数返回值是函数 可以用函数嵌套的形式实现 但是并不是必须使用嵌套实现
func yunsuan(str:String) -> ((Int,Int) ->Int )
{
func all(num1:Int, num2:Int) ->Int
{
switch str
{
case "+":
return num1 + num2
case "-":
return num1 - num2
case "*":
return num1 * num2
case "/":
return num1 / num2
default:
return 0
}
}
return all
}
let fuhao1 = yunsuan("+")
let sum1 = fuhao1(1,2)
</span>