非全局函数-lua初学者 关于local函数的一个问题

问题描述

lua初学者 关于local函数的一个问题

local f,g
local function f()
print("Hello f1!");
g()
end

local function g()
print("Hello g1!");
end
f()

如上,运行的时候为何会报错?实际上,我理解最开始已经声明了函数g,所以函数f中调用g的时候是应该可以找到的~
报错如下
Hello f1!
lua: localFunction.lua:4: attempt to call upvalue 'g' (a nil value)
stack traceback:
localFunction.lua:4: in function 'f'
localFunction.lua:10: in main chunk
[C]: ?

解决方案

执行的时候g还未初始化。函数g的定义放前面。

解决方案二:

关于拷贝构造函数的一个问题

时间: 2024-09-17 03:59:59

非全局函数-lua初学者 关于local函数的一个问题的相关文章

Lua中的闭合函数、非全局函数与函数的尾调用详解_Lua

上一篇我们简单地介绍了Lua的函数,这次,我们来点特别的,来介绍一下Lua的函数(小若:等等,我是不是错过了什么?) 1.闭合函数(closure) 理论上来说,Lua的所有函数都应该称之为闭合函数,但是,这种反人类的做法,我们还是抛弃吧~ 按书上的描述,一个闭合函数就是:一个函数加上该函数所需访问的所有"非局部的变量". 理论什么的,很烦人,来看看一个函数: 复制代码 代码如下: function count()     local i = 0;     return functio

Lua教程(十): 全局变量和非全局的环境_Lua

Lua将其所有的全局变量保存在一个常规的table中,这个table被称为"环境".它被保存在全局变量_G中. 1. 全局变量声明: Lua中的全局变量不需要声明就可以使用.尽管很方便,但是一旦出现笔误就会造成难以发现的错误.我们可以通过给_G表加元表的方式来保护全局变量的读取和设置,这样就能降低这种笔误问题的发生几率了.见如下示例代码: 复制代码 代码如下: --该table用于存储所有已经声明过的全局变量名 local declaredNames = {} local mt = {

Lua所有内置函数罗列_Lua

在大多数Lua语法分析中可以获得这些标准Lua函数. 无可争辩, 我们可以查阅Lua网站, 但是一些少了的函数被Blizzard进行了调整. 下面列出了所有Lua函数. WoW API中的Lua注意在WoWAPI没有提供所有标准的Lua函数, 很显然, 操作系统以及文件I/O库是不支持的 Lua函数这些函数都是Lua编程语言的一部分, 点击这里了解更多. •assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调试信息 •c

Lua中全局变量与非全局环境介绍_Lua

今天来聊两个话题--全局变量和非全局环境. 正如大家目前心里所感受到的,全局变量的内容很简单,而非全局环境的内容就稍微要锻炼一下脑细胞了. 1.全局变量的原形 在Lua中,要声明全局变量很简单,那就是定义变量的时候,前面不要加上local. 这个神秘的全局变量,其实本质上也是一个table,它把我们创建的全局变量都保存到一个table里了. 而这个table的名字是:_G   我们来看看代码: 复制代码 代码如下:     -- 定义一个全局变量     gName = "哎哟,很挫哦"

【COCOS2DX-LUA 脚本开发之十一】C/C++与LUA之间进行数据函数交互以及解决“PANIC: UNPROTECTED ERROR IN CALL TO LUA API (ATTEMPT TO INDEX A NIL VALUE)”的问题

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/lua-game/1343.html 在使用Cocos2d-x 时候,难免需要C/C++调用Lua函数.数据或Lua调用C/C++函数,那么本篇讲详细介绍C/C++与Lua之间的数据.函数交互. 首先让我们来简单了解几个Lua API函数: int   luaL_dofile (lua_State *L, const char *filena

Lua中的常用函数库汇总_Lua

lua库函数 这些函数都是Lua编程语言的一部分, 点击这里了解更多. assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调试信息 collectgarbage() - 垃圾收集器. (新增于1.10.1) date(format, time) - 返回当前用户机器上的时间. error("error message",level) - 发生错误时,输出一条定义的错误信息.使用pcall() (见下面)捕捉错误

【C/C++学院】(2)函数/Lua/数组/恶搞程序(修改桌面背景,播放音乐)

1.函数                                                                                                                                                                                                                       主要是为了代码重用. 函数就是对某一特定功能的抽象.     

非递归二叉树遍历-c语言中函数指针作为参数与函数的嵌套

问题描述 c语言中函数指针作为参数与函数的嵌套 函数指针作为另一函数的参数和函数的嵌套的区别,感觉都是调用,有什么不一样呢?他们都适用在什么情况下!(我是在学非递归遍历二叉树时看到的) Status Visit(TElemType e){ printf("%cn",e); return OK; } Status InOrderTraverse(BiTree T ,Status(*Visit)(TElemType e)){ SqStack S; InitStack(S); Push(S,

lua实时监听函数运行时间

问题描述 lua实时监听函数运行时间 想写一个通用的功能可以处理,实时监听函数运行时间,__index只能监听到入口,...