我对Lua很陌生。
说我有一根"1234567890“字串。
我想迭代所有可能的3位数。(即123,234,345,456....)
for m in string.gmatch("1234567890","%d%d%d") do
print (m)
end
但这给出了输出123,456,789。
我应该使用什么样的模式?
其次,还有一个相关的问题,我如何指定一个3-digit数字?"%3d"似乎不起作用。"%d%d%d"是唯一的路吗?
注意:这不是标记Regular expression,因为Lua没有Reg
在parser.lua中,我有一个函数:
local function parsefile()
...
end
在main.lua中,我有以下内容:
local parser = require "parser"
parser.parsefile()
main.lua和parser.lua都位于同一个目录中。当我运行main.lua时,会得到以下错误:
尝试索引本地“解析器”(布尔值)
我做错了什么?
我对Lua很陌生。我把Lua 5.2移植到了另一个平台上。我能运行Lua脚本。但是加载模块有问题。
下面有一个sample.lua脚本。在这个脚本中,我试图使用require函数调用另一个Lua脚本中可用的函数。require函数在lua_load()和LUA_ERRSYNTAX中失败。不确定这是否是Lua5.2版本的问题。
sample.lua
require"module"
welcome()
module.lua
function welcome()
print(" Hello in module")
end
sample.lua文件中的requ
有两个脚本文件,其中包含以下脚本
//parent.lua
function scope()
local var = "abc"
require "child"
end
//child.lua
print(var)
这样,child.lua将打印一个nil值,因为parent.lua中的作用域不会向模块公开其本地特性。我认为是这样的,因为require指令是在这个范围内声明的,并且是在var声明之后声明的。我的愿望是将子元素的所有行完全注入到父元素中。子脚本只是为了更好的可读性而导出。如何传递本地作用域?loadfile()和dofile()
我有一个像这样的nginx.conf:
local /api/{
# lua_code_cache off;
default_type application/json;
content_by_lua_file webapi.lua;
}
在webapi.lua中,我得到了这样的代码:
require("LuaXml")
local xml = xml
function foo1(args)
dofile(file1)
local var = var
xml.load(file1)
end
function fo
我的目标是简单地从C++调用一个表函数,该函数在函数内部使用'self‘来访问该表的字段和函数。我不断得到一个可爱的‘试图调用一个nill值(本地自我)’的线上有‘self. value’。下面是我的Lua剧本。
Foo = { name = 'Foo' }
function Foo:OnUpdate()
print('In OnUpdate in Lua')
print(self.name)
end
下面是我的C++代码(暂时忽略任何错误处理)。
lua_State* L = luaL_newstate();
luaL_openlibs(L)
我开始在ZeroBrane Studio中为Marmalade快速项目使用Project / Analyze,我发现它非常有用,让我直接了解全局范围和本地范围。
然而,这里有一个烦恼:它指向库--基本上--作为未定义的全局:
.../resources/main.lua(11): first use of unknown global variable 'system'
.../resources/main.lua(12): first use of unknown global variable 'json'
.../resources/main.lua(13
我设法用这个函数从我的Lua应用程序中获得了几乎所有的变量,但不是.lua文件的本地变量.
main.lua根目录下的示例:本地测试= 10
找不到这个。
有什么想法吗?
注意:我在一个Love2D应用程序中运行这个函数,这个函数是从一个love.draw (love.draw)调用的。
function getvarvalue (name)
local value, found
-- try local variables
local exit = false
local level = 0
while debug.getinfo(level) ~=
我对luarocks很陌生,我只是试着安装luarepl。安装工作显然进行得很顺利:
$ luarocks install luarepl
Installing https://luarocks.org/luarepl-0.8-1.rockspec...
Using https://luarocks.org/luarepl-0.8-1.rockspec... switching to 'build' mode
Updating manifest for /Users/me/.luarocks/lib/luarocks/rocks-5.1
luarepl 0.8-1 is now
如果我将“本地”函数定义为:
局部函数调度(归档)coroutine.resume(收益率)端
...and我想从C++调用这个函数,我不认为我可以使用lua_getglobal()调用:
m_pThreadState = lua_newthread(m_MasterLuaState);
//Load/define the above "Dispatch" routine local to this thread.
luaL_loadbuffer(m_pThreadState, m_ScriptBody, strlen(m_ScriptBody),"Console
我对lua非常陌生,我想了解一下下面的行为。
当我试图运行以下递归函数时:
local func = function ( n )
if n == 1 then return 1
else return n * func( n - 1 )
end
end
print( func( 5 ) )
程序将失败时出错:
lua: main.lua:16: attempt to call a nil value (global 'func')
stack traceback:
main.lua:16: in local 'func'
main.lua:38:
我已经注册了一个函数,它创建了一个轻型用户数据,供C++和lua使用。当我使用简单变量、ints和字符串进行测试时,这个部分工作得很好。我可以在lua中创建lightuserdata,当它是字符串和ints时,不会出现错误。然而,当我尝试使用表时,它会变得更加复杂。
std::string aString = lua_tostring(lua,-4);
第一个参数是正确的,因为它应该是字符串。
if (lua_type(lua,-3 == LUA_TTABLE)) //is true so i know it recognizes it as a table
{
auto t = l
我试图使用torch7和LUA运行代码,并得到了这个错误。
usr/local/torch/install/share/lua/5.2/trepl/init.lua:389: module 'bit' not found: No LuaRocks module found for 'bit'
no field package.preload['bit']
no file '/root/.luarocks/share/lua/5.2/bit.lua'
no file '