Skip to main content

类比 Python 中的 dir 函数

在编程过程中,我们经常遇到不知道一个对象中有哪些成员可使用。

在 Python 中,大家经常食用 dir 来查看可操作的字段。

在 Yak 中,也有类似的内置函数。

我们学习 / 测试一个 "未知的" 对象

manager = hook.NewManager()desc(manager)

返回的结果为

type palm/common/yak.(YakToCallerManager) struct {  Fields(可用字段):  StructMethods(结构方法/函数):  PtrStructMethods(指针结构方法/函数):      func Add(v1: context.Context, v2: string, v3: []*ypb.ExecParamItem, v4: string, v5: func (v1: *yaklang.YakEngine) return(error) , v6 ...string) return(error)      func AddForYakit(v1: context.Context, v2: string, v3: []*ypb.ExecParamItem, v4: string, v5: interface { Send(*ypb.ExecResult) error }, v6 ...string) return(error)      func CallByName(v1: string, v2 ...interface {})      func CallPluginKeyByName(v1: string, v2: string, v3 ...interface {})      func GetCurrentHooks() return([]*yak.CallerHooks)      func GetCurrentHooksGRPCModel() return([]*ypb.YakScriptHooks)      func LoadPlugin(v1: string, v2 ...string) return(error)      func LoadPluginContext(v1: context.Context, v2: string, v3 ...string) return(error)      func Remove(v1: *ypb.RemoveHookParams)      func Set(v1: context.Context, v2: string, v3: func (v1: *yaklang.YakEngine) return(error) , v4 ...string) return(error)      func SetForYakit(v1: context.Context, v2: string, v3: interface { Send(*ypb.ExecResult) error }, v4 ...string) return(error)}

大家可以看到,我们通过 desc 函数,可以将一个对象的所有可调用的公开接口展示出来。

hook 是一个高阶模块

hook 是一个高阶模块,主要用于加载 Yakit 插件与跨脚本调用 Yakit 插件,是 Yakit 插件系统的核心支持模块。