
/** * 函数是Swift的重要组成单位,一个Swift程序可以包含很多函数 *///函数定义和调用//定义一个函数,声明2个形参,返回Int类型func max(x:Int,y:Int) -> Int{ //定义一个变量z,等于xy中较大的值 var z = x > y ? x : y return z}//声明一个函数,声明一个形参,返回String类型func sayHi (name:String) -> String{ println("正在执行sayHi()函数") return "\(name),你好!"}var a = 6var b = 9var result = max(a,b)println(result)//9println(sayHi("老师"))//"老师,你好!"//函数返回值//1.无返回值,无参func name(){ println("执行name函数")}//2.没有返回值,有1个形参func sayname(n:String) ->(){ println("\(n),好呀!")}//3.没有返回值有两个形参func showPeople(msg:String,name:String,age:Int) ->VoID{ for _ in 1...age { println(msg) }}name()sayname("huang")println(showPeople("Swift","c", 4))//4.函数返回值支持元组类型//返回值是(String,String)func diva(num:Double) ->(String,String){ var zheng = Int64(num) var xiao = round((num - Double(zheng)) * 100) return ("\(zheng)","\(Int(xiao))")}var result1 = diva(1234.3421)println("\(result1.0)")println("\(result1.1)")//5.为返回值元组指定名称func getMaxAndMin(nums:[Int]) ->(max:Int,min:Int){ var max = nums[0] var min = nums[0] for n in nums { if n > max { max = n } if n < min { min = n } } return(max,min)}var numss = [20,453,342,35,76,324,65,14,]var maxAndmin = getMaxAndMin(numss)//(.0 453,.1 14)//递归函数,函数调用它自身func fu(n:Int) -> Int{ if n == 0 { return 1 }else if n == 1 { return 4 }else { //函数中调用它自身,就是函数递归 return 2 * fu(n - 1) + fu(n - 2) }}println("\(fu(10))")//10497//函数的形参//1.外部形参名及其简化形式func girth(wIDth: Double,height: Double) ->Double{ return Double(2) * (wIDth + height)}println(girth(12,23.7))//2.指定外部形参名,外部形参名 局部变量名 : 形参类型func girth1(高 height: Double,宽 wIDth: Double) ->Double{ return Double(2) * (height + wIDth)}println(girth1(高: 12.4,宽: 33))//90.8//3.指定外部形参名,当外部形参名和局部变量名一样时,可以在局部变量名前加#,外部形参名 局部变量名 : 形参类型func girth2(#height: Double,#wIDth: Double) ->Double{ return Double(2) * (height + wIDth)}println(girth2(height: 23,wIDth: 34.3))//114.6//4.可以省略其中一个局部变量的外部形参名func girth3(#height: Double,wIDth: Double) ->Double{ return Double(2) * (height + wIDth)}println(girth3(height: 12.4, 45))//114.8//5.设置形参默认值func people(姓名 name: String = "杰瑞",age: Int){ println("\(name),\(age)")}println("\(people(12))")people(姓名:"jumjum", 15)//6.设置默认形参,默认值应放在后面func people1( age: Int,姓名 name: String = "杰瑞"){ println("\(name),\(age)")}println("\(people1(12))")people1(15,姓名:"jumjum")//7.取消带默认值的外部形参名,用_空格代替外部形参名func people2(age: Int,_ name: String = "杰瑞"){ println("\(age),\(name)")}println("\(people2(14))")//8.个数可变的形参(...),一个函数最多只能包含一个个数可变形参,个数可变形参的本质是一个数组类型的形参func text(a : Int,names : String...){ for a in names { println(a) } println(a)}text(12,"name1","name2")//9.常量形参和变量形参//在一些情况下程序希望直接使用函数形参作为变量,形参默认的是常量let声明,不能在函数体内对形参常量赋值//使用var定义变量形参func girth(var #wIDth : Double,#height : Double) -> Double{ //wIDth,height 是变量形参,因此可以重新赋值 wIDth = (wIDth + height) * 2 return wIDth}girth(wIDth: 12.4,height: 34)//92.8//10.In-Out形参,需要把值类型的参数传入函数内部//交换两个参数的值func swap(inout a : Int,inout b : Int){ let num = a a = b b = num}var a = 6var b : Int = 9swap(&a,&b)println("a is \(a),b is \(b)")//"a is 9,b is 6"//引用类型的参数传递class DataWrap{ var a :Int = 0 var b :Int = 0}func swa(var DW : DataWrap!){ //交换DW的a,b变量的值 var num = DW.a DW.a = DW.b DW.b = num println("DW.a = \(DW.a),DW.b = \(DW.b)")}var DW = DataWrap()DW.a = 6DW.b = 9swa(DW)//"DW.a = 9,DW.b = 6"func swa1(inout DW : DataWrap!){ //交换a.b的变量 var tmp = DW.a DW.a = DW.b DW.b = tmp println("a is \(DW.a),b is \(DW.b)") //如果存在DW = nil 运行swa1后,不能访问DW DW = nil}var DW1 : DataWrap! = DataWrap()DW1.a = 5DW1.b = 9swa1(&DW1)//println("\(DW1.a)")//报错
部分内容来自《疯狂Swift讲义》
总结以上是内存溢出为你收集整理的Swift学习笔记-函数和闭包(1)全部内容,希望文章能够帮你解决Swift学习笔记-函数和闭包(1)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)