如何在lua中实现这样的功能

时间:2018-11-01 19:10:27

标签: lua corona method-chaining love2d

我想制作一个插件,有人可以在其中调用函数,并在调用时传递一些信息,并创建一个监听函数, 该功能必须如下所示:

database.execute(database.Update)
:data({username="Jhon"})
:response(function(responseString, responseTable)
    /// 
end)

我知道如何进行这样的database.execute(_, _, _)这样的基本函数调用,但是不知道如何进行这样的多行操作

database.execute()
:_()
:_()

1 个答案:

答案 0 :(得分:3)

要进行多线呼叫,您需要像以下示例一样制作表格:

local mydatabase = { a=1 }
mydatabase.method1 = function( self, param )
    self.a = self.a + param
    return self
end
mydatabase.method2 = function( self, param )
    self.a = self.a * param
    return self
end
mydatabase.method3 = function( self, param )
    self.a = self.a - param
    return self
end

-- A chain of function calls
mydatabase:method1( 3 )
:method2( 2 )
:method3( 5 )

print( mydatabase.a ) -- Should return 3

因此该方法返回的表包含返回时用于调用它们的方法