Lua base loadfile()

Lua base loadfile()_第1张图片
加载程序.jpg

前言

今天来看一个比较清晰的加载函数,这个函数功能非常清晰,就是从文件中加载内容并封装成一个函数返回,相比函数load()来说好理解多了,接下来我们一起看一下这个函数的使用方法。

内容


loadfile

  • 原型:loadfile([filename])
  • 解释:函数会从参数filename指定的文件中加载内容,并将内容封装成一个函数返回,当参数filename被省略时,函数loadfile()默认从标准输入来获取内容。

usage

  • 首先我们新建一个文件将文件命名为loadfiletest.lua然后编写代码如下:
-- 查一下加载之前有没有这个函数
print("\nbefore loadfile print_func1 is", print_func1)

-- 加载文件
local func = loadfile("loadfileinput.lua")

-- 查一下加载之后有没有这个函数
print("\nafter loadfile print_func1 is", print_func1)

print("\nfunc is", func);

print("\nfunc() run result is", func())

-- 执行返回的函数以后查询fun函数是否存在
print("\nafter func print_func1 is", print_func1)

print("\nprint_func1() run result is :")
print_func1("runnig print_func1")

-- 查一下局部函数是否存在
print("\nafter func print_func2 is", print_func2)
  • 其中代码中的loadfileinput.lua为需要加载的外部文件,具体代码如下:
-- 定义一个全局函数
function print_func1(var)
    print("var1 = "..var)
end

-- 定义一个局部函数
local function print_func2(var)
    print("var2 = "..var)
end

-- 自定义函数体
local i = 100
i = i+ 1
return i
  • 运行结果
Lua base loadfile()_第2张图片
base_loadfile.png

总结

  • 由结果可以看出,这个loadfile()函数的返回值是一个函数,被返回函数的内容是被加载文件的全部内容。
  • 被加载文件中的函数或者语句仅仅会被加载编译,但是不会被执行,只有被返回的函数执行以后才会创建这些函数和执行文件中的语句。
  • 被加载文件中的全局函数可以在返回的函数func()执行之后使用,而局部函数是不可以的。
  • 不知道大家有没有这样的疑惑,被返回的函数func()怎么添加参数呢?我一开始也很迷惑,后来想想确实也没有什么必要,这个函数就是用来加载那个文件的,而大多数人也不会把逻辑直接写在文件中而不定义函数,所以我个人感觉并不是需要传进去什么参数。

你可能感兴趣的:(Lua base loadfile())