私はこのコードを持っていなくても、同じテーブルである:なぜそれがプロトタイプ
function createRect(x, y, w, h)
local rect = {
type = "rect",
x = x,
y = y,
w = w,
h = h,
translate = function(rect, vector)
assert(vector.type == "vector2d")
local rect = shapes.createRect(rect.x + vector.x, rect.y + vector.y, rect.w, rect.h)
end,
}
return rect
end
translate = function(rect, vector)
assert(vector.type == "vector2d")
local rect = shapes.createRect(rect.x + vector.x, rect.y + vector.y, rect.w, rect.h)
end
local o = createRect(2,3,4,5)
local q = createRect(2,3,4,5)
print(o.translate, q.translate, translate)
いくつかの非常に簡単なコードで、Luaの中でのテストファクトリ関数に書き込まれ、JSの非常に連想させますモジュールパターン。工場の機能について話すときに人々が通常不平を言うのは、メモリフットプリントです。 o
とq
はちょうど割り当てられているので、もちろんそれらは異なったtranslate()
の機能を持っています。
function: 0x7fcdbe600d50 function: 0x7fcdbe600d50 function: 0x7fcdbe600d90
これはなぜですか?A:私が間違って証明されたが これはどうしたらできますか?私は、しかし、彼らは同じですが、異なる機能するo.translate
とq.translate
であると仮定...