54 lines
1016 B
Go
54 lines
1016 B
Go
|
// Package lua ...
|
||
|
//
|
||
|
// Description : lua ...
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 2024-11-14 17:46
|
||
|
package lua
|
||
|
|
||
|
import (
|
||
|
luaCompile "github.com/yuin/gopher-lua"
|
||
|
)
|
||
|
|
||
|
func NewVm() *VM {
|
||
|
return &VM{luaVm: luaCompile.NewState()}
|
||
|
}
|
||
|
|
||
|
type VM struct {
|
||
|
luaVm *luaCompile.LState
|
||
|
}
|
||
|
|
||
|
// Run 运行脚本
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 18:08 2024/11/14
|
||
|
func (v *VM) Run(script string) error {
|
||
|
if err := v.luaVm.DoString(script); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// GetResultAndRemove 获取最后一个返回值, 并从结果中移除
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 18:20 2024/11/14
|
||
|
func (v *VM) GetResultAndRemove() luaCompile.LValue {
|
||
|
val := v.luaVm.Get(-1)
|
||
|
v.luaVm.Pop(1)
|
||
|
return val
|
||
|
}
|
||
|
|
||
|
// GetResultByIndex 根据索引获取返回值
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 18:21 2024/11/14
|
||
|
func (v *VM) GetResultByIndex(index int) luaCompile.LValue {
|
||
|
val := v.luaVm.Get(index)
|
||
|
return val
|
||
|
}
|