[英]lua's loadstring() not working with tables
我有一些文本,我正在嘗試通過加載字符串加載它。 以下作品:
local m = loadstring("data = 5")()
但是,當數據是表時,它將不起作用,並顯示錯誤“試圖調用nil”
local m = loadstring("data = { 1 = 10}")()
lua中的表聲明要求將整數鍵放在方括號內:
data = {
[1] = value,
}
始終允許將鍵括在方括號中,並且是可能的。 如果您的密鑰遵循以下模式,則可以跳過它: [A-Za-z_][A-Za-z0-9_]*
(與lua中的有效變量名相同)
如果添加了assert
您將獲得更多有用的消息:
local m = assert (loadstring("data = { 1 = 10}"))()
結果:
stdin:1: [string "data = { 1 = 10}"]:1: '}' expected near '='
stack traceback:
[C]: in function 'assert'
stdin:1: in main chunk
[C]: ?
要真正回答這個問題,除非表鍵碰巧遵循Lua變量命名規則,否則必須將其放在方括號內,例如。
local m = assert (loadstring("data = { [1] = 10}"))()
當我這樣做時,我仍然是零
那有什么關系 loadstring
完成。
只要這樣做:
assert (loadstring("data = { 1 = 10}"))()
print (data [1])
您不需要變量m
。 loadstring
將表放入data
-這很重要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.