zoukankan      html  css  js  c++  java
  • lua委托

    原文链接:https://blog.csdn.net/hjssss/article/details/100130964

    1 基本函数绑定

    function func(a)
      print(a)
    end
     
    function bind(func, ...)    
        return function(...)
            func( ...)
        end
    end
     
     
    f = bind(func)
    f(1)

    2 基于table表的构造绑定方式

    a = {}
     
    function a.init(data)
        a.data = data
    end
     
    function a.func(self,t)
      print(self.data)
    end
     
    function bind(self, func, ...)    
        return function(self, ...)
            func( self ,...)
        end
    end
     
    a.init(2)
    f = bind(a, a.func)
    f(a, 1)

    3 基于类的构造绑定方式

    a = {}
    function a:new(data)
        o = setmetatable({}, {__index = self})
        self.data = data
        return o
    end
     
    function a:func()
      print(self.data)
    end
     
    function bind(self, func, ...)    
        return function(self, ...)
            func( self ,...)
        end
    end
     
    t = a:new(2)
    f = bind(t, t.func)
    f(t)

    4 通用的接口格式

    function func(self, a)
      print(a)
    end
     
    function bind(self, func, ...)    
        return function(self, ...)
            func(self, ...)
        end
    end
     
     
    f = bind(nil, func)
    f(nil, 2)
  • 相关阅读:
    ShaderLab 枚举常量
    PHP to .NET Compiler
    填充圆算法
    战争迷雾
    A*
    寻路算法
    Unity中将动画片段保存为文件
    令人蛋疼的错误提示 0xcdcdcdcd ,0xdddddddd ,0xfeeefeee ,0xcccccccc ,0xabababab
    2D光照
    Rider 2018 激活码
  • 原文地址:https://www.cnblogs.com/yifengs/p/14925955.html
Copyright © 2011-2022 走看看