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"))()
  • 运行结果
base_loadstring.png

总结

  • 由结果一可知,函数loadstring()与函数loadfile()一样,都是返回一个函数。
  • 由结果二可知,返回函数的内容就是字符串参数string的内容,执行返回的函数时,字符串中的代码就被执行了。
  • 结果三展示了这个函数的一般使用方法。
  • 结果四展示了如何通过字符串生成一个全局函数,但是无法生成局部函数,并且生成的函数func_test()在调用完函数func()之后才被创建出来
  • 最后一个例子展示了参数chunkname的作用,就是在错误的提示信息中起到提示作用。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容