2014-04-29 28 views
3

通过使用Python,我们可以将字符串重新定义为字典。重新定义Lua中的变量类型

例子:

var = "testing" 
var = {'body': var} 
print var['body'] 
'testing' 

和Lua我想要做的一样。我想将字符串对象转换为表格。

我尝试:

> var = "testing" 
> var = {'body', var} 
> print(var) 
table: 0x12b2930 
> for i,j in pairs(var) do 
>> print(i) 
>> print(j) 
>> end 
1 
body 
2 
testing 
> 

有了上面的例子中,我可以

> print(var[2]) 
testing 
> 

上面的代码是不履行我的要求取检验字符串。我想用"body"键存储值'testing'
我要像下面获取:

print(var['body']) 
'testing' 

请帮我在这

+0

即例如蟒片断不正确。如果你按顺序运行这些行,你就不会从测试结果中得到测试结果。你得到'{'body':'testing'}'这正是你从lua得到的,如果你有一些漂亮的表格(内置lua'print'函数没有)。 –

+0

@EtanReisner对不起,我现在编辑 –

回答

6
var = "testing" 
var = {body = var} 
print(var.body) 
print(var["body"]) 

逗号在表格结构分开表项。因此,通过指定{"body", "testing"},可以创建两个分别等于“body”和“testing”的键1,2的条目,因为这是初始化顺序数组的方式。

如果要为每个值分配任意键,则必须使用=,如{key1 = "body", key2 = "testing"}中所述。现在您可以通过两种方式访问​​这些元素。一种是像对象,使用点:

tab1.key1

,一个是阵列/地图等,使用方括号:

tab1["key1"]

在第二个示例中,您必须注意报价。如果您使用双引号,则直接访问密钥。如果不是(tab1[key1]),则使用存储在名为key1的变量中的值作为密钥说明符。

+0

非常感谢你的解释:) –

3

最接近Python代码的Lua代码是

var = "testing" 
var = {['body'] = var} 
print(var['body'])