【发布时间】:2018-04-06 16:47:24
【问题描述】:
我最近查找了一个简单的 Lua oop 原理示例并稍作修改,如下所示。
我觉得难以理解的是 elf.name 和 hobbit.name 之间的联系。为什么当我改变任何一个的值时,它会影响另一个?我知道我可以在函数内将 elf.name 设置为 local,但它不会产生相同的效果。
相比之下,改变 another.name 的值对其他两个没有影响。 elf.name 和 hobbit.name 之间有持久的联系吗?我认为它们被视为单独的对象。
谢谢。
;^) 扎洛金
elf = {}
elf.name = "Frodo"
another = {}
function Character()
return elf
end
local hobbit = Character()
print ("elf.name set to Frodo")
print("hobbit.name - "..hobbit.name)
print("elf.name - "..elf.name.."\
")
hobbit.name = "Charlie"
print ("hobbit.name set to Charlie")
print("hobbit.name - "..hobbit.name)
print("elf.name - "..elf.name.."\
")
another.name = "Gary"
print ("hobbit.name set to Charlie and another.name set to Gary")
print("hobbit.name - "..hobbit.name)
print("elf.name - "..elf.name)
print("another.name - "..another.name.."\
")
结果:-
>>>>elf.name set to Frodo
>>>>hobbit.name - Frodo
>>>>elf.name - Frodo
>>>>
>>>>hobbit.name set to Charlie
>>>>hobbit.name - Charlie
>>>>elf.name - Charlie
>>>>
>>>>hobbit.name set to Charlie and another.name set to Gary
>>>>hobbit.name - Charlie
>>>>elf.name - Charlie
>>>>another.name - Gary
【问题讨论】: