lua 基本函数dofile loadfile loadstring

2018-05-10 12:40:35

dofile([filename])

如果提供了filename则打开读取里面内容并以代码块方式执行,没提供则从标准输入stdin读取并执行。
如果报错,错误会上传到到调用者(运行在非保护模式)

例子

新建aa.lua

--aa.lua
url = 'www.freecls.com'
local name = '沧浪水'

执行代码

dofile('aa.lua')
print(url)
print(name)

--结果
--[[
www.freecls.com
nil
--]]
--可以看出局部变量在外部不可见


loadfile([filename])

如果提供了filename则打开读取里面内容并返回函数,没提供则从标准输入stdin读取并返回函数。

例子

还是加载上面的aa.lua

local func = loadfile('aa.lua')
print(url,name)
--nil	nil

func()
print(url,name)
--www.freecls.com	nil

总结: 从例子可以看出跟dofile唯一的区别就是loadfile以函数形式返回并需要手动执行


loadstring(str)

str为代码块字符串,跟loadfile很像,只是它以字符串形式来加载

例子

local func = loadstring("url = 'www.freecls.com'\nlocal name='沧浪水'")
print(url,name)
--nil	nil

func()
print(url,name)
--www.freecls.com	nil


总结

1.本文对lua加载外部代码做简单的介绍,如果有疑问可以给我留言
2.lua的版本为5.1,运行环境centos7 64位
3.原文地址http://www.freecls.com/a/2712/15

©著作权归作者所有
收藏
推荐阅读
  • lua assert collectgarbage

    assert (v [, message])断言,主要是用来输出错误当v为false或nil时,message可选默认为assertion failed当v为true时返回v,和message两个参数...

  • lua require模块加载机制

    调用模块步骤当我们调用require "modname"1.会去检查package.loaded表格是否已经加载过,如果已经加载过直接返回,所以重复加载同一个模块多次只会加载1次2.如果package...

  • err
    lua os(操作系统)库

    lua os库提供了简单的跟操作系统有关的功能os.clock()返回当前当前cpu使用的秒数例子--用来计算中间的遍历花费了多少cpu时间 local x = os.c...

  • err
    lua io库(输入输出)

    lua io库提供了2种模式来文件处理1.简单模式-所有操作会在2个当前文件(默认为标准输入stdin,标准输出stdout)2.完全模式-基于文件句柄,功能丰富一点简单...

  • lua数组表格处理(table库用法)

    table库由一些基本函数组成来以数组的形式(也就是只能处理数字下标的元素)处理表格包括插入移除排序连接所有元素为字符串table.insert (table, [pos,] value)插入数据,p...

  • nginx模块 ngx_http_headers_module

    ngx_http_headers_module 模块是用来增加 Expires 和 Cache-control,或者是任意的响应头。Syntax: add_header name value [alw...

  • nginx模块 ngx_http_gunzip_module、ngx_http_gzip_module、ngx_http_gzip_static_module

    ngx_http_gunzip_module 模块将文件解压缩后并在响应头加上 "Content-Encoding: gzip" 返回给客户端。为了解决客户端不支持gzip压缩。编译的时候带上 --w...

  • nginx模块 ngx_http_flv_module、ngx_http_mp4_module

    ngx_http_flv_module模块提供了对 flv 视频的伪流支持。编译的时候带上 --with-http_flv_module。它会根据指定的 start 参数来指定跳过多少字节,并在返回数...

  • nginx模块 ngx_http_fastcgi_module

    ngx_http_fastcgi_module 模块使得nginx可以与 fastcgi 服务器通信。比如目前要使得 nginx 支持 php 就得使用 fastcgi技术,在服务器上装上 nginx...

  • nginx模块 ngx_http_autoindex_module

    ngx_http_autoindex_module 模块可以将uri以 / 结尾时,列出里面的文件和目录。Syntax: autoindex on | off; Default: autoindex ...

简介
天降大任于斯人也,必先苦其心志。