作者:fengsh998
原文地址:http://blog.csdn.net/fengsh998/article/details/30314359
转载请注明出处
如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢!
在上一节中有些问题还没有弄清,在这里自己写了一下,做了一下验证,并希望能给读者有所帮助。
看例子:
例子中包括
callback函数的声明与使用
函数作为形参进行传递
函数作为返回值
函数支持泛型,当然class也支持。
- 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
- }
调用:
classViewController:UIViewController{
- funcwillcallback(callback:CallBackManager)
- println("回调前结果(callback.callbackName)")
- funcdidcallback(callback:CallBackManager)
- println("回调后结果(callback.callbackName)")
- funcadd(a:Int,b:Int)->Int
- returna+b
- overridefuncviewDidLoad(){
- super.viewDidLoad()
- vartest=CallBackManager()
- test.willdoitcallback=willcallback
- test.diddoitcallback=didcallback
- test.testCall()
- test.testparams(add,instruction:"测试函数作为传参")
- letfuncMulti=test.testfunctionReturn("返回函数地址")
- letret=funcMulti(5,5)
- println("5*5=(ret)")
- return;}
- }
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|