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是會報錯的!
相關文章
- ascii函式和substr函式的用法ASCII函式
- StretchBlt函式和BitBlt函式的區別和用法函式
- lua非全域性函式函式
- C中呼叫Lua函式函式
- C語言中函式printf()和函式scanf()的用法C語言函式
- Lua中呼叫ref和out修飾引數的函式/過載函式函式
- Sanic response stream() 函式用法和示例函式
- Sanic response redirect() 函式用法和示例函式
- Sanic response raw() 函式用法和示例函式
- Sanic response file() 函式用法和示例函式
- Sanic response html() 函式用法和示例HTML函式
- Sanic response text() 函式用法和示例函式
- Oracle - DBMS_LOB函式和用法Oracle函式
- $.extend()和$.fn.extend()函式用法函式
- async 函式的含義和用法函式
- Thunk 函式的含義和用法函式
- MySQL INTO OUTFILE和LOAD DATA INFILE用法MySql
- Translate函式用法函式
- abs函式用法函式
- Sanic response json() 函式用法和示例JSON函式
- Python函式用法和底層分析Python函式
- Excel isna函式的用法和例項Excel函式
- co 函式庫的含義和用法函式
- scanf()函式的用法和實踐 (轉)函式
- openresty及lua的隨機函式REST隨機函式
- lua 函式變數 assert判斷函式變數
- Sanic response file_stream() 函式用法和示例函式
- GetModuleFileName函式的用法函式
- SQL LEN()函式用法SQL函式
- SSD-函式用法函式
- createStyleSheet()函式的用法函式
- OVER(PARTITION BY)函式用法函式
- qsort函式的用法函式
- oracle table()函式用法Oracle函式
- COALESCE函式的用法。函式
- 透過例子學習Lua(6)--C/C++中用Lua函式(轉)C++函式
- 轉 Lua標準庫: table函式, 數學函式, 字串函式/格式化/配對,函式字串
- makefile 條件判斷用法和 自定函式用法簡單記錄函式