我正在使用Lua表來存儲數據以創建網頁。正文內容存儲在一個表中,有一些靜態文本,一些由Lua函數生成。如何在包含函數的Lua表中使用table.concat
Web.HTML={
"<h1>Hello World</h1><br>",
"<br><h2>Current Directory</h2><br>",
io.popen("cd"):read('*l'),
"<br><h2>Current Lua Interpreter</h2><br>",
arg[-1] or arg[0],
"<br><h2>Current Package Path</h2><br>",
package.path:gsub(";",";<br>\n"),
"<br><h2>Current Package CPath</h2><br>",
package.cpath:gsub(";",";<br>\n"),
"<br><h2>Current Environment Table:</h2><br>",
io.popen("set"):read('*a'):gsub("\n","<br>\n").." ",
"<br><h2>Current Date:</h2><br>",
os.date(),
"<br><h2>Math calculation</h2><br>",
math.pi/180
}
該表,然後「印刷」使用table.concat功能,加入一些新行,以幫助可讀性:
print(table.concat(Web.HTML,"<br>\n"))
如上預期在Lua 5.1或等效和服務器成功通過作品的示例這是我網頁的一部分。
我想在我的HTML表中放置任意的Lua代碼,它返回一個字符串連接,但我找不到正確的語法。 concat函數在'concat'的表中索引無效的值(函數)。
我曾嘗試:
Web.HTML = {
"Classic text example:",
function() print "Hello World"; end,
}
和
Web.HTML = {
"Classic text example:",
function() return "Hello World"; end,
}
一個更有用的例子是列出的Lua的全球環境中的所有表:
Web.HTML = {
"<br><h2>Current Lua Libraries</h2><br>",
function()
local text = ''
for i,v in pairs(_G) do
if type(v)=="table" then
text = text..i.."<br>\n"
end
end
return text
end
,
"Success!"
}
我也有嘗試使用loadstring(代碼;返回文本)()作爲一個熵在我的桌子上沒有成功。任何指針歡迎。
在此先感謝。
加文
太好了,正是我想要的。謝謝G – Gavin
對於大多數感興趣的函數返回一些統計信息,這不起作用:一個函數返回服務器正常運行時間,一個返回服務器生成的網頁數的函數。 'Web.HTML'對於同一類型的所有請求是相同的,不是嗎? –
@EgorSkriptunoff,怎麼樣?如果您每次填寫新表並關閉當前值,則它將按預期工作。 –