我得到一个奇怪的错误,我不能为我的生活破解。
我正在编写纸牌游戏,我有两张不同长度的桌子。一个链接到功能的条目,另一个保持播放的卡片。第一个表格用于牌组中某些牌的属性。
ATTRIBUTES = {
Reset = RuleBook.Do_Reset,
Go_Lower= RuleBook.Do_Go_Lower,
Mirror = RuleBook.Do_Mirror}
调用这些函数的方式如下:
ATTRIBUTES[cardPile[#cardPile].Attribute]()
我已经打印出了卡片对象和ATTRIBUTES表格的内容,两者完全一致。具有属性的卡在函数的属性下具有表条目,并且这些条目链接到Do _...函数。但上面的代码行似乎不起作用。如果有人有想法或建议,他们将不胜感激。
答案 0 :(得分:0)
Lua让你基本上可以使用任何类型的lua值作为表中的键。上面代码的问题在于,ATTRIBUTE
表使用字符串作为键,但cardPile[#cardPile].Attribute
是函数 NOT 字符串。
在此处执行查找时:
ATTRIBUTES[cardPile[#cardPile].Attribute]()
您说在ATTRIBUTES
中查找具有作为函数的键cardPile[#cardPile].Attribute
的相应值。您定义的ATTRIBUTES
表只包含字符串作为键 - 它没有键作为键,因此返回nil。
对此有两种可能的解决方法:
假设cardPile
的{{1}}字段已经引用了您想要的功能,您可以这样称呼它:
Attribute
另一种方法是更改设置cardPile[#cardPile].Attribute()
的{{1}}字段的方式 - 使其引用字符串而不是函数:
card_obj