自定义脚本语言引擎开发纪实 -文件依赖与作用域

引入依赖文件

小的内嵌式的功能模块,一个文件搞定,但如果功能比较多,或者一些好的函数需要沉淀,保存成公共模块的文件,此时就需要引入依赖文件。
引入模块语法
文件寻找路径的方式是基于当前正在运行的目录为相对目录。

import("mm.script") //模块名为mm

另一种方式:

import("mm.script" : ui) //模块名不使用文件名,重命名为ui

文件中定义的全局变量的作用域

约定 文件模块中的全局变量的作用域,默认是只文件内可以见。如果别的文件模块中要访问,需要明确的使用 模块名:变量名的方式。
通模块文件中定义的函数,函数中调用的全局变量,只会使用函数所在模块中定义的变量。
这样的约定,是方式多文件,同变量名,被覆盖造成的问题。

文件中函数的可见性

约定 同变量约定类似,如果模块A要访问模块B的函数,需要使用模块名:函数名的方式,明确指出来。函数调用的子函数,也都是使用本函数所在模块定义的函数。

例子

//mm.script
x=1
func test()
	js.ui.messagebox("mm.script", x, 0)
end

直接加载的ui.script

import("mm.script" : exp)
x=30
func test()
	js.ui.messagebox("ui.script", x, 0)
end

test() //调用ui.script中的test
exp:test()	//调用mm.script中的test

执行结果:
在这里插入图片描述
在这里插入图片描述
可见mm.script访问的是其文件中定义的。
修改一下 让mm.script中也访问ui.script中的x值

//mm.script
x=1
func test()
	js.ui.messagebox("mm.script", ui:x, 0)
end

执行上面的ui.script结果为:
在这里插入图片描述
在这里插入图片描述
先说到这吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章