我是Lua的新手,我想创建一个表[doh],它可以存储以下值:
parent.child[1].value = "whaterver"
parent.child[2].value = "blah"
Run Code Online (Sandbox Code Playgroud)
但是,大多数情况下,通常只有一个孩子,所以访问这个值会更容易:
parent.child.value
Run Code Online (Sandbox Code Playgroud)
为了使事情更简单,我想以某种方式存储我的价值观
parent.child[1].value == parent.child.value
Run Code Online (Sandbox Code Playgroud)
但要做到这一点,我必须将此值存储在内存中两次.我有什么方法可以做到这一点,所以:
parent.child.value points to parent.child[1].value
Run Code Online (Sandbox Code Playgroud)
没有将值存储在内存中两次?
另外一个问题是,如何检查表占用多少内存?
Mic*_*man 10
但是该值将存储为字符串,因此它是一个需要在两个地方而不是表格中引用的字符串.
首先,所有类型(除布尔值,数字和光用户数据)的引用-如果t
是一个表,你这样做t2 = t
,那么这两个t
和t2
是在内存中的同一个表引用.
第二件事 - 字符串在Lua中实现.这意味着所有相等的字符串,例如"abc"
,结果"ab".."c"
实际上是一个字符串.Lua还只存储对字符串的引用.所以你不应该担心内存 - 一次只有一个字符串实例.
你可以安全地做parent.child.value = parent.child[1].value
,你只会在一个表中使用一个内存(几个字节),不会复制任何字符串,只会被引用.
归档时间: |
|
查看次数: |
15466 次 |
最近记录: |