1.loadfile——只编译,不运行

loadfile故名思议,它只会加载文件,编译代码,不会运行文件里的代码。
比如,我们有一个hellofile.lua文件:

复制代码代码如下:
print(“hello”);
function hehe()
print(“hello”);
end

这个文件里有一句代码,和一个函数。试试用loadfile加载这个文件,如下代码:

复制代码代码如下:
    loadfile("hellofile.lua");
    print("end");

输出结果如下:

复制代码代码如下:
[LUA-print] end

如果说loadfile会执行文件里的代码的话,那么,应该会输出hello字符串的。
结果表明,它是不会执行代码的。

2.dofile——执行

很明显,dofile就是会执行代码的家伙了,如下代码:

复制代码代码如下:
    dofile("E:/Android/wordspace_cocosIDERc0/CocosLuaTest/src/hellofile.lua");
    print("end");

输出结果如下:

复制代码代码如下:
[LUA-print] hello
[LUA-print] end

这里有点尴尬,文件路径我用了绝对路径,因为dofile在Coco Code IDE里使用相对路径会找不到文件(即使使用了addSearchPath)

不过没关系,不影响本文的内容。

3.require——我只执行一次

require和dofile有点像,不过又很不一样,require在第一次加载文件的时候,会执行里面的代码。

但是,第二次之后,再次加载文件,则不会重复执行了。换句话说,它会保存已经加载过的文件,不会重复加载。
测试代码如下:

复制代码代码如下:
    for i = 1, 2, 1 do
        require("hellofile.lua");
    end
    print("end");

为了说明这种情况,我刻意调用了两次require,输出结果如下:

复制代码代码如下:
[LUA-print] hello
[LUA-print] end

和我们说的一样,调用了两次,但是代码只执行了一次。
如果这里换成dofile,则会输出两次hello字符串。

Lua中的loadfile、dofile、require详解的更多相关文章

  1. Lua中的loadfile,dofile,require使用,最后还有调试

    1.loadfile---只编译,不运行. loadfile编译代码成中间码并且返回编译后的chunk作为一个函数,而不执行代码:另外loadfile不会抛出错误信息而是返回错误代号. loadstr ...

  2. 前端后台以及游戏中使用Google Protocol Buffer详解

    前端后台以及游戏中使用Google Protocol Buffer详解 0.什么是protoBuf protoBuf是一种灵活高效的独立于语言平台的结构化数据表示方法,与XML相比,protoBuf更 ...

  3. Node.js中环境变量process.env详解

    Node.js中环境变量process.env详解process | Node.js API 文档http://nodejs.cn/api/process.html官方解释:process 对象是一个 ...

  4. PHP 中 16 个魔术方法详解

    PHP 中 16 个魔术方法详解   前言 PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __constru ...

  5. Nmap在实战中的高级用法(详解)

    @ 目录 Nmap在实战中的高级用法(详解) Nmap简单的扫描方式: 一.Nmap高级选项 1.查看本地路由与接口 2.指定网口与IP地址 3.定制探测包 二.Nmap扫描防火墙 1.SYN扫描 2 ...

  6. Linux中/proc目录下文件详解

    转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...

  7. JQuery在循环中绑定事件的问题详解

    JQuery在循环中绑定事件的问题详解 有个页面上需要N个DOM,每个DOM里面的元素ID都要以数字结尾,比如说 ? 1 2 3 <input type="text" nam ...

  8. C#中的Linq to Xml详解

    这篇文章主要介绍了C#中的Linq to Xml详解,本文给出转换步骤以及大量实例,讲解了生成xml.查询并修改xml.监听xml事件.处理xml流等内容,需要的朋友可以参考下 一.生成Xml 为了能 ...

  9. 批处理中的echo命令图文详解

    批处理中的echo命令图文详解 1. Echo 显示当前ECHO的状态:ECHO ON 或者ECHO OFF 2. ECHO ON 将ECHO状态设置为ON,将显示命令行,也就是前面的C:\>类 ...

  10. C#中的预处理器指令详解

    这篇文章主要介绍了C#中的预处理器指令详解,本文讲解了#define 和 #undef.#if.#elif.#else和#endif.#warning和#error.#region和#endregio ...

随机推荐

  1. Windows CMD常用命令大全 运行命令

    http://blog.163.com/lixunhuan@126/blog/static/122060620075124142658/ CMD命令大全 net use \\ip\ipc$ " ...

  2. 解决IIS动态内容压缩的问题

    转:http://www.cnblogs.com/cmt/archive/2013/03/10/iis-dynamic-dompression-mime.html

  3. java程序员学习路线图 java程序员进阶路线

  4. Hadoop Streaming

    原文地址:http://hadoop.apache.org/docs/r1.0.4/cn/streaming.html Hadoop Streaming Streaming工作原理 将文件打包到提交的 ...

  5. 4.Java基础:Java对象的内存管理机制

    1.使用new创建对象,在堆内存分配对象空间.初始化: 2.在方法栈中定义局部变量,吃用对堆内存中对象的引用: 3.方法执行完返回,栈内存自动释放,局部变量销毁: 4.如果堆内存中对象没有变量引用它, ...

  6. python学习笔记——multiprocessing 多进程模块Process

    系统自带的fork模块创建的多进程是基于Linux或Unix平台的,而window平台并不支持: python中的multiprocess为跨平台版本的多进程模块,支持子进程.通信和共享数据.执行不同 ...

  7. asp.net 在线解压缩文件类

    using System; using System.Collections.Generic; using System.Text; using System.IO; using Microsoft. ...

  8. centos7 SSH链接不上

    我试了下面的方法不行--(并且也排查了 ssh是正确安装的) [一]关闭selinuxvi /etc/selinux/config 然后reboot重启!!!! [二]关闭防火墙并禁止启动,有能力自己 ...

  9. ssh-copy-id 安全地复制公钥到远程服务器上

    [root@NB .ssh]# ssh-copy-id -i id_rsa.pub " -p22 root@150.57.38.226" root@150.57.38.226's ...

  10. Freemarker-2.3.22 Demo - No03_使用map绑定多个参数

    package No03_使用map绑定多个参数; import java.io.File; import java.io.FileOutputStream; import java.io.Outpu ...