• 初探swift语言的学习笔记四-2(对上一节有些遗留进行处理)


    作者:fengsh998
    原文地址:http://blog.csdn.net/fengsh998/article/details/30314359
    转载请注明出处
    假设认为文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我。谢谢。


    在上一节中有些问题还没有弄清,在这里自己写了一下,做了一下验证,并希望能给读者有所帮助。

    看样例:

    样例中包含

    callback函数的声明与使用

    函数作为形參进行传递

    函数作为返回值

    函数支持泛型,当然class也支持。

    import Foundation
    
    typealias Point = (Int, Int)
    
    let origin: Point = (0, 0)
    
    
    //初始化函数用
    func willDoit(sender : CallBackManager)
    {
        println("willDoit defaulft.")
    }
    
    func didDoit(sender : CallBackManager)
    {
        println("didDoit defaulft.")
    }
    
    class CallBackManager
    {
        //声明两个函数变量
        var willdoitcallback : (CallBackManager) -> () = willDoit
        var diddoitcallback : (CallBackManager) -> () = didDoit
        
        var callbackName = "hello world"
        init()
        {
            
        }
    
        func testCall()
        {
            self.willdoitcallback(self)
            
            callbackName = "reset data"
            println("to do something.")
            
            self.diddoitcallback(self)
        }
        
        //函数地址作为形參传递
        func testparams(addfunc:(Int,Int)->(Int),instruction : String) ->Bool
        {
            println("3 + 5 = (addfunc(3,5)) , 第二个參数值为:(instruction)")
            return true
        }
        
        //函数作为返回值
        func testfunctionReturn(instruction : String) -> (Int,Int) -> Int
        {
            func Multiplication(a:Int,b:Int) ->Int
            {
                return a * b
            }
            
            return Multiplication
        }
        
        //自己主动闭包类型
        //调用simpleAssert(testNumber % 2 == 0, "testNumber isn't an even number.")
        func simpleAssert(condition: @auto_closure () -> Bool, message: String) {
            if !condition() {
                println(message)
            }
        }
        
        //可变參数
        func unknowParam(slist : String...)
        {
            var ret : String = ""
            for usb in slist
            {
                println(usb)
                ret += (usb + ",")
            }
        }
        
        //使用泛型
        //simpleMin(17, 42)                 //整型參数
        //simpleMin(3.14159, 2.71828)       //浮点型
    
        func simpleMin<T: Comparable>(x: T, y: T) -> T {
            if x < y {
                return y
            }
            return x
        }
    }

    调用:

    class ViewController: UIViewController {
        
        
        func willcallback(callback : CallBackManager)
        {
            println("回调前结果(callback.callbackName)")
        }
        
        func didcallback(callback : CallBackManager)
        {
            println("回调后结果(callback.callbackName)")
        }
        
        func add(a:Int,b:Int) -> Int
        {
            return a + b
        }
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            var test = CallBackManager()
            test.willdoitcallback = willcallback
            test.diddoitcallback = didcallback
            test.testCall()
            
            test.testparams(add,instruction: "測试函数作为传參")
            
            let funcMulti = test.testfunctionReturn("返回函数地址")
            
            let ret = funcMulti(5,5)
            println("5 * 5 = (ret)")
            
            return;}
    }


  • 相关阅读:
    创建和销毁对象
    echarts折线图堆叠样式 图表只显示一类折线图
    web中跨页面的点击事件
    3DMAX学习笔记——Animate简单的动画
    3DMAX学习笔记——Rendering的时候模型太亮
    Unity3D学习笔记——让Cube沿着某个轴运动
    Unity3D学习笔记——Camera绕着物体旋转
    Unity3D学习笔记——Unity3D的窗口布局
    ZLXSC2015Day1题解
    浅谈同构类问题的骗分算法
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7225568.html
Copyright © 2020-2023  润新知