Lua base loadstring()

作者: AlbertS | 来源:发表于2016-09-01 19:49 被阅读997次
加载字符串.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的作用,就是在错误的提示信息中起到提示作用。

相关文章

  • Lua base loadstring()

    前言 今天再来看一个更加清晰的加载函数,这个函数和昨天的函数loadfile()真的很像,就是将后者的从文件中加载...

  • lua中loadstring的运用

    项目中用到loadstring,感觉这个东西挺有用的。例如我们游戏开启的时候 获取服务器中版本号和其他信息,这个...

  • lua-loadstring和require

    今天发现项目的配置文件是通过loadstring函数生成的table对象,在想用require直接生成table对...

  • Lua base tonumber()

    前言 重新开始更新的第一天,我们来聊一个轻松一点的函数,tonumber()这是个将指定参数转换成数字的函数,利用...

  • Lua base type()

    前言 今天学习的这个函数在lua中绝对很常用,用来查询当前变量是什么类型,有点反射机制的意思。那么知道变量是什么类...

  • Lua base tostring()

    前言 前面一篇文章我们介绍了把参数转换成数字的函数,今天来看一个把参数转换成字符串的函数,话说这个函数我在写lua...

  • Lua base setfenv()

    前言 今天来这个函数是用来设置当前运行环境的,也就是和我们之前讲过的getfenv函数是相关的,当时在学习getf...

  • Lua base select()

    前言 今天这个函数看到的时候,第一印象就是想到了c语言中大名鼎鼎的select函数,因为他们函数名是一样的,并且l...

  • Lua base setmetatable()

    前言 记得原来我们总结过一个查询元表的函数getmetatable(), 但是有查询必然会有设置,今天我们就一起来...

  • Lua base pcall()

    前言 作为苦逼的程序猿大周末的时候也必须不能忘记学习,今天我们来看一个调用其他函数的函数,这个函数其实就是给其他函...

网友评论

    本文标题:Lua base loadstring()

    本文链接:https://www.haomeiwen.com/subject/wochettx.html