Swift--07函数使用
print("Swift函数使用") /*1、函数 使用func来声明一个函数,使用名字和参数来调用函数。使用 ->来指定函数返回值类型。 定义格式:func函数名(参数列表) ->返回值类型 { 函数体 } 调用格式:函数名(实参列表) 使用说明:无返回值时可以省略->及返回值类型,无参时()不能省略 */ /* -> Void*/ func printHello() { for _ in0 ..< 5 { print("hello world") } } printHello() /* hello world */ //2、默认从第二个参数开始带标签 func sum1(_ a:Int,b: Int) ->Int { return a + b } print(sum1(2,b:3)) // 5 //3、使用'_'可以忽略外部调用标签 func sum2(_ a:Int,_ b:Int) -> Int { return a + b } print(sum2(1,4)) // 5 //4、可以添加不同的外部标签和内部参数 func sum3(num1 a: Int,num2 b:Int) -> Int { return a + b } print(sum3(num1:2,num2: 3)) // 5 //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 //6、变参函数,参数会转换为数组形式 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 //7、使用元组来让一个函数返回多个值。该元组的元素可以用名称或数字来表示。 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
//8、函数可以作为返回值返回 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 1、函数参数默认是不可变的,可以添加var声明为变量 2、也可使用inout修饰,告诉编译器该参数可以被修改 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 //10、参数默认值 func defaultValue(_ a:Int,b: Int =100) -> Int { return a+b } print(defaultValue(10,b:20)) //如果设置了数值,按照设置的值来:30 print(defaultValue(10)) //如果没有赋值,按照默认值来计算:110 //11、函数重载 func add(_ a:Int,b: Int) ->Int { print("int") return a+b } func add(_ a:Double,b: Double) ->Double { print("double") return a+b } //系统会根据传入的参数个数及类型决定调用哪个参数 print(add(2,b:3)) //调用整型处理函数:5 print(add(2.1,b:4.5)) //调用小数处理函数:6.6 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |