调试脚本传参 + 全局包预导入
This commit is contained in:
parent
da61086725
commit
90d22fa94f
@ -10,5 +10,5 @@ package lua
|
||||
// ScriptParam 脚本参数
|
||||
type ScriptParam struct {
|
||||
Name string `json:"name"` // 参数名称
|
||||
Value string `json:"value"` // 参数值
|
||||
Value any `json:"value"` // 参数值
|
||||
}
|
||||
|
10
vm.go
10
vm.go
@ -94,7 +94,14 @@ func (v *VM) GetVm(scriptParamList ...ScriptParam) *luaCompile.LState {
|
||||
v.l.Lock()
|
||||
defer v.l.Unlock()
|
||||
if len(v.pool) == 0 {
|
||||
return luaCompile.NewState()
|
||||
// 基于libs预导入lua的常用模块
|
||||
vm := luaCompile.NewState()
|
||||
libs.Preload(vm)
|
||||
// 设置脚本参数
|
||||
for _, itemParam := range scriptParamList {
|
||||
vm.SetGlobal(itemParam.Name, luar.New(vm, itemParam.Value))
|
||||
}
|
||||
return vm
|
||||
}
|
||||
l := v.pool[len(v.pool)-1]
|
||||
// 基于libs预导入lua的常用模块
|
||||
@ -102,7 +109,6 @@ func (v *VM) GetVm(scriptParamList ...ScriptParam) *luaCompile.LState {
|
||||
// 设置脚本参数
|
||||
for _, itemParam := range scriptParamList {
|
||||
l.SetGlobal(itemParam.Name, luar.New(l, itemParam.Value))
|
||||
|
||||
}
|
||||
v.pool = v.pool[:len(v.pool)-1]
|
||||
return l
|
||||
|
21
vm_test.go
21
vm_test.go
@ -14,7 +14,7 @@ import (
|
||||
|
||||
func TestNewVm(t *testing.T) {
|
||||
scriptTable := map[string]string{
|
||||
"json": `local json = require("dkjson")
|
||||
"json": `local json = require("json")
|
||||
local lua_table = {
|
||||
name = "wx771720",
|
||||
age = 18,
|
||||
@ -55,3 +55,22 @@ end
|
||||
_, err = VMInstance.RunPreCompileScript("http")
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
func TestNewVM_Map_Param(t *testing.T) {
|
||||
scriptTable := map[string]string{
|
||||
"json": `
|
||||
local json = require("json")
|
||||
print(jsonData.name)
|
||||
local json_str = json.encode(jsonData)
|
||||
print(json_str) -- 输出JSON字符串`,
|
||||
}
|
||||
if err := InitVM(1024, nil, scriptTable); err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
|
||||
_, err := VMInstance.RunPreCompileScript("json", ScriptParam{Name: "jsonData", Value: map[string]any{
|
||||
"name": "白茶清欢",
|
||||
}})
|
||||
fmt.Println(err)
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user