簡體   English   中英

lua的loadstring()不適用於表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM