我想知道是否有一种标准方法可以将一些参数和使用信息与方法捆绑在一起
没有。
以某种方式将文档放入库元表中并让用户使用pairs():
您可以建立一个约定,如果方法名称是foo
您存储文档foo_docs
或类似的东西。
x.foo_docs = "returns the sum of three numbers"
function x:foo(a,b,c)
return a + b + c
end
在没有参数的情况下调用方法时打印一些使用信息。
这将阻止您创建没有参数的方法。
有人可以指出“Lua-ish”的方向吗?
如果不知道您为什么需要它以及您希望它如何工作,这很难说。要获得类似的东西,<method>.__doc__
您可以将方法(即函数)转换为可调用表,这样您就可以对其进行索引并存储所需的任何元数据,但这会很丑陋并且需要为每个方法创建一个新表。例如,这将允许您将方法转换为可调用表:
local documentMethodMetatable = {}
function documentMethodMetatable.__call(t,...)
return t.method(...)
end
function documentMethod(method, doc)
return setmetatable({ method=method, doc=doc}, documentMethodMetatable)
end
然后你可以写这样的东西:
local foo = {name="Donut"}
function foo:sum(a,b,c)
print(self.name .. " says the sum is " .. (a + b + c))
end
foo.sum = documentMethod(foo.sum, "Receives three arguments and prints their sum.")
foo:sum(2,2,3) --> call sum
print(foo.sum.doc) --> index sum to get docs