print("Swift函数使用")
/*1、函数
@H_403_20@ 使用func来声明一个函数,使用名字和参数来调用函数。使用 ->来指定函数返回值类型。 @H_403_20@ 定义格式:func函数名(参数列表) ->返回值类型 {函数体
}
@H_403_20@ 调用格式:函数名(实参列表) @H_403_20@ 使用说明:无返回值时可以省略->及返回值类型,无参时()不能省略*/
/* -> Void*/
func printHello() {
for _ in0 ..< 5 {
print("hello world")
}
}
printHello()
/*
hello world
*/
func sum1(_ a:Int,b: Int) ->Int {
return a + b
}
print(sum1(2,b:3)) // 5
func sum2(_ a:Int,_ b:Int) -> Int {
return a + b
}
print(sum2(1,4)) // 5
func sum3(num1 a: Int,num2 b:Int) -> Int {
return a + b
}
print(sum3(num1:2,num2: 3)) // 5
func calc(_ a:Int,b: Int,c:(Int,Int)->Int) -> Int {
return c(a,b);
}
var ret = calc(100,b:200,c: sum1)
print(ret)//返回的是sum1函数计算的结果:300
func averageValue(_ numbers:Double ...) -> Double {
var total:Double = 0.0
for numberin numbers {
total += number
}
return total/Double(numbers.count)//除数取double类型,使结果也为double类型。
}
print(averageValue(1,2,3,4,5))// 3.0
var array = [1,2,3,4,5]
func getMostInArray(_ a:[Int]) -> (min:Int,max: Int) {
var maxV = a[0]
var minV = a[0]
for valuein a[1..<a.count] {//for in
if value > maxV {
maxV = value
} elseif value < minV {
minV = value
}
}
return (minV,maxV)
}
let minMax = getMostInArray(array)//调用函数,返回的是array中的最大值和最小值组成的元组。
print("min =\(minMax.min),max =\(minMax.max)")// min = 1,max = 5
func getFunc() -> (Int)->Int {
func add(_ num: Int) -> Int {
return num+10
}
return add //作为返回值返回
}
var addFunc = getFunc()
print(addFunc(5)) // 15
print(addFunc(5)) // 15
func getFunc(_ number: Int) -> ()->Int {
var total = 0
func embedFunc() -> Int {
total += number
return total
}
return embedFunc
}
var funcOne = getFunc(10)
var funcTwo = getFunc(100)
print(funcTwo()) //100
print(funcOne()) //10
print(funcOne()) //20
print(funcOne()) //30
print(funcOne) //这样返回结果提醒为:(Function)
/*9、inout
@H_403_20@ 1、函数参数默认是不可变的,可以添加var声明为变量 @H_403_20@ 2、也可使用inout修饰,告诉编译器该参数可以被修改 @H_403_20@ 3、函数内部想要改变传递的参数,调用时需要在参数前加'&'*/
func mySwap( _ a:inout Int,b:inout Int) {
let c = a
a = b
b = c
}
var a = 2,b =3
print("a =\(a),b =\(b)")//a = 2,b = 3
mySwap(&a,b: &b) // 实现了数值的交换
print("a =\(a),b =\(b)")// a = 3,b = 2
func defaultValue(_ a:Int,b: Int =100) -> Int {
return a+b
}
print(defaultValue(10,b:20)) //如果设置了数值,按照设置的值来:30
print(defaultValue(10)) //如果没有赋值,按照默认值来计算:110
func add(_ a:Int,b: Int) ->Int {
print("int")
return a+b
}
func add(_ a:Double,b: Double) ->Double {
print("double")
return a+b
}