作者:fengsh998
转载请注明出处
在上一节中有些问题还没有弄清,在这里自己写了一下,做了一下验证,并希望能给读者有所帮助。
看例子:
例子中包括
callback函数的声明与使用
函数作为形参进行传递
函数作为返回值
- importFoundation
- typealiasPoint=(Int,Int)
- letorigin:Point=(0,0)
- //初始化函数用
- funcwillDoit(sender:CallBackManager)
- {
- println("willDoitdefaulft.")
- }
- funcdidDoit(sender:CallBackManager)
- {
- println("didDoitdefaulft.")
- }
- classCallBackManager
- //声明两个函数变量
- varwilldoitcallback:(CallBackManager)->()=willDoit
- vardiddoitcallback:(CallBackManager)->()=didDoit
- varcallbackName="helloworld"
- init()
- functestCall()
- self.willdoitcallback(self)
- callbackName="resetdata"
- println("todosomething.")
- self.diddoitcallback(self)
- //函数地址作为形参传递
- functestparams(addfunc:(Int,Int)->(Int),instruction:String)->Bool
- println("3+5=\(addfunc(3,5)),第二个参数值为:\(instruction)")
- returntrue
- //函数作为返回值
- functestfunctionReturn(instruction:String)->(Int,Int)->Int
- funcMultiplication(a:Int,b:Int)->Int
- returna*b
- returnMultiplication
- //自动闭包类型
- //调用simpleAssert(testNumber%2==0,"testNumberisn'tanevennumber.")
- funcsimpleAssert(condition:@auto_closure()->Bool,message:String){
- if!condition(){
- println(message)
- //可变参数
- funcunknowParam(slist:String...)
- varret:String=""
- forusbinslist
- println(usb)
- ret+=(usb+",")
- //使用泛型
- //simpleMin(17,42)//整型参数
- //simpleMin(3.14159,2.71828)//浮点型
- funcsimpleMin<T:Comparable>(x:T,y:T)->T{
- ifx<y{
- returny
- returnx
- }
调用: