Lua——load和loadstring函式用法
目錄
位於如下包體封裝好的load函式 (等同於直接在Lua環境執行的loadstring函式)
load(chunk, chunkname, mode, env)
Lua環境例項說明
a = 100
local content = [[
return a
]]
local func = loadstring(content)
print(func())
等同於
a = 100
local func = function()
return a
end
print(func())
若報錯bad argument #1 to 'loadstring' ... ,把loadstring改為load即可(同理,可能是load函式報錯,則改為loadstring) 這可能是不同環境採用的lua庫不同導致的,直接使用編輯器執行lua程式碼是使用loadstring函式,否則可能是load函式。報錯如下:
lua.exe AA.lua
lua.exe: AA.lua:9: bad argument #1 to 'load' (function expected, got string)
stack traceback:
[C]: in function 'load'
AA.lua:9: in function 'AFunc'
AA.lua:14: in main chunk
[C]: ?
允許傳參的形式load函式
local A = {}
function A:AFunc()
local content = [[
return function(self)
return self.id > 100
end
]]
self.id = 1000
local loadFunc = load(content) --load返回的是一個無參匿名方法
local myFunc = loadFunc() --執行load返回的方法,拿到content字串裡寫的有參匿名方法
local boolValue = myFunc(self) --執行有參匿名方法,傳遞self進去,返回boolean值(true)
print(boolValue)
end
A:AFunc()
等同於
local A = {}
function A:AFunc()
self.id = 1000
local loadFunc = function()
return function(self)
return self.id > 100
end
end
local myFunc = loadFunc()
local boolValue = myFunc(self)
print(boolValue)
end
A:AFunc()
即 load(content) 等同於 function() content end (目前我發現無法給這個function()傳任何引數,但可以通過我上面的傳參的例子進行實現)
注意:content是一個[[]]包括的字串,它裡面的特殊字元是無效的,若content不寫return是會報錯的!
相關文章
- StretchBlt函式和BitBlt函式的區別和用法函式
- C語言中函式printf()和函式scanf()的用法C語言函式
- Sanic response stream() 函式用法和示例函式
- Sanic response redirect() 函式用法和示例函式
- Sanic response raw() 函式用法和示例函式
- Sanic response file() 函式用法和示例函式
- Sanic response json() 函式用法和示例JSON函式
- Sanic response html() 函式用法和示例HTML函式
- Sanic response text() 函式用法和示例函式
- Python函式用法和底層分析Python函式
- Lua中呼叫ref和out修飾引數的函式/過載函式函式
- abs函式用法函式
- openresty及lua的隨機函式REST隨機函式
- Sanic response file_stream() 函式用法和示例函式
- Python range() 函式用法Python函式
- SSD-函式用法函式
- GetModuleFileName函式的用法函式
- Instr函式的用法函式
- SQL LEN()函式用法SQL函式
- Python排序函式用法Python排序函式
- makefile 條件判斷用法和 自定函式用法簡單記錄函式
- vue中非同步函式async和await的用法Vue非同步函式AI
- PHP 自定義函式用法及常用函式集合PHP函式
- 【Oracle的NVL函式用法】Oracle函式
- string 函式的基本用法函式
- C++ replace() 函式用法C++函式
- fcntl函式用法詳解函式
- sys_context函式的用法Context函式
- C# List常用函式用法C#函式
- python中zip()函式的用法Python函式
- Python3 range() 函式用法Python函式
- PostgreSQL>視窗函式的用法SQL函式
- abs(int)、fabs(double)函式用法函式
- SQL函式Group_concat用法SQL函式
- C++回撥函式 用法C++函式
- C++ 函式 realloc 的用法C++函式
- Excel函式的初級用法Excel函式
- Matlab中erf函式的用法Matlab函式