Это не привязывает параметр localX к object.x.
Если можно вместо localX использовать x, то прибиндить можно так:
local object = {x = -20}
object.raw = object
object.x = 15
print(object.x,object.raw.x) -- 15 15
object.x = 0
print(object.x,object.raw.x) -- 0 0
object.raw.x = 20
print(object.x,object.raw.x) -- 20 20
Если разные имена нужны, придётся пользоваться метатаблицами.
local raw = {localX = -20}
local object = setmetatable({raw = raw}, {
__index = function(self, k)
assert(k == 'x')
return raw.localX
end,
__newindex = function(self, k, v)
assert(k == 'x')
raw.localX = v
end
})
object.x = 15
print(object.x,object.raw.localX) -- 15 15
object.x = 0
print(object.x,object.raw.localX) -- 0 0
object.raw.localX = 20
print(object.x,object.raw.localX) -- 20 20
Но вообще, стоило бы лучше продумать архитектуру кода.