メソッドにいくつかのパラメーターと使用法情報をバンドルする標準的な方法があるのだろうか
いいえ。
どういうわけか、ドキュメントをライブラリのメタテーブルに置き、ユーザーがpair()を使用できるようにします:
foo
メソッド名がドキュメントを保存する場所などの規則を確立するだけfoo_docs
です。
x.foo_docs = "returns the sum of three numbers"
function x:foo(a,b,c)
return a + b + c
end
メソッドがパラメーターなしで呼び出されたときに、いくつかの使用情報を出力します。
これにより、パラメーターのないメソッドを作成できなくなります。
誰かが「ルアっぽい」方向を指し示すことができますか?
なぜそれが必要なのか、どのように機能させたいのかを本当に知らずに言うのは難しいです. <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