Lua base loadstring()

加载字符串.gif

前言

今天再来看一个更加清晰的加载函数,这个函数和昨天的函数loadfile()真的很像,就是将后者的从文件中加载改为从字符串中加载,其他的方面几乎没有变化,接下来我们一起看一下这个函数的使用方法。

内容


loadstring

  • loadstring(string [,chunkname])
  • 解释:函数会从所给的字符串中来加载程序块并运行,常使用这种构造式来调用assert(loadstring(s))(),如果省略参数chunkname,那么它默认为所给的字符串。

usage

  • 首先我们新建一个文件将文件命名为loadstring.lua然后编写代码如下:
-- 简单测试
local ret = loadstring("print(\"first test loadstring function.\")")
print("\nthe result ret is", ret)


-- 运行返回值
print("\nthe result of running ret() is:")
ret();


-- 使用常用的方式
print("\nthe result of running common test is:")
assert(loadstring("print(\"common test loadstring function.\")"))()


-- 直接生成一个全局函数
local func = loadstring("function func_test(str) print(\"str = \", str) end")

-- 测试函数是否生成
print("\nbefore run func, functest =", func_test)
func()
print("\nafter run func, functest =", func_test, "\n")

-- 测试参数chunkname的作用
assert(loadstring("i = i + 1", "third test"))()
  • 运行结果
Lua base loadstring()_第1张图片
base_loadstring.png

总结

  • 由结果一可知,函数loadstring()与函数loadfile()一样,都是返回一个函数。
  • 由结果二可知,返回函数的内容就是字符串参数string的内容,执行返回的函数时,字符串中的代码就被执行了。
  • 结果三展示了这个函数的一般使用方法。
  • 结果四展示了如何通过字符串生成一个全局函数,但是无法生成局部函数,并且生成的函数func_test()在调用完函数func()之后才被创建出来
  • 最后一个例子展示了参数chunkname的作用,就是在错误的提示信息中起到提示作用。

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