好吧我需要从Lua脚本确定系统的操作系统,但Lua本身没有API,所以我使用os.getenv()和查询环境变量.在Windows上检查环境变量"OS"给了我系统操作系统的名称,但是在Windows和大多数Unix上都有一些可以检查的变量吗?
我正处于一个被迫学习Lua的阶段,所以你对我这样做有什么建议吗?除了PHP之外,我没有其他任何脚本语言的经验.
那么,关于"先行Lua"的一些建议 - 页面?
编辑
作为精彩教程页面的补充,您能否建议我能制作的任何"程序"能帮助我学习Lua吗?想象一下,我想学习C++中的指针,我会创建一个链接列表.我想触及Lua的基础知识,但同时也要接受相当高级的东西.
我希望将Lua嵌入到我的C#应用程序中,我认为C#的lua API周围有一个包装器,但是不记得它是什么.有人能指出我的方向吗?
我正在尝试将表从Lua加载到C++,但我无法正确使用它.我正在通过第一次迭代就好了,但是在第二次调用lua_next时它崩溃了.有任何想法吗?
Lua文件:
level = { 1, 2, 3, }
Run Code Online (Sandbox Code Playgroud)
C++文件 - 首先我这样做了:
lua_getglobal( L, "level" );
for( lua_pushnil( L ); lua_next( L, 1 ); lua_pop( L, -2 ) )
{
if( lua_isnumber( L, -1 ) ) {
int i = (int)lua_tonumber( L, -1 );
//use number
}
}
lua_pop( L, 1 );
Run Code Online (Sandbox Code Playgroud)
然后我尝试从参考手册:
lua_getglobal( L, "level" );
int t = 1;
lua_pushnil( L );
while( lua_next( L, t ) ) {
printf( "%s - %s",
lua_typename( …Run Code Online (Sandbox Code Playgroud) 这些天我最喜欢的语言是Lua.我只有一个问题,为什么它的默认行为是函数中的变量是全局的?在类似的语言Icon中,有一个关键字"global",当一个人真正想要使用全局而不是自然行为来默认为local时使用它(我在五分钟之前再次被它咬了).如果有人能告诉我背后的理性(比如我所知道的范围困难导致Lua中没有"继续"关键字),我会对此感觉更好.
在这里完成emacs新手.
我在Ubuntu上使用emacs 23.1.1和emacs入门套件.我主要在lua模式下工作(安装时package-install lua-mode).
我需要调整缩进的工作方式,因此它符合我的编码指南.
准则是:
例:
local foo = function()
print("Hello, world!")
end
如果我不尝试使用自动缩进来解决,我会使用emacs:
local foo = function()
print("Hello, world")
end
更新:
(这属于评论,但由于它需要额外的格式,我必须把它放在这里.)
如果我尝试托马斯的解决方案,我得到这个:
local foo = function()
print("Hello, world")
end
请注意,end它使用制表符和四个空格缩进.不太有用......
更新2:
这件事也以错误的方式缩进:
local bar = foo(
"one",
"two",
baz(), -- Note three spaces
"quo"
)
它应该是:
local bar = foo(
"one",
"two",
baz(),
"quo"
)
更新3:
错误缩进的第三种情况:
local bar = foo(
"one",
"two"
)
local t … 有人告诉我有关超载操作员的问题,但我甚至不确定如何开始这样做.我试图做的是改变:
table["key"]=table["key"]+12345
Run Code Online (Sandbox Code Playgroud)
成
table["key"]+=12345
Run Code Online (Sandbox Code Playgroud)
甚至使用一个功能,这将是美妙的.我已经搜索过,但找不到答案,所以我希望有人可以指导我或者直接回答问题.如果做它的缩写形式最终将是最短的方式,那么我想我会坚持这一点.我只是想尽可能多地保存击键,因为我确实有数百个可以实现的地方.谢谢!
我试图验证变量不等于这个或那个.我尝试使用以下代码,但都不起作用:
if x ~=(0 or 1) then
print( "X must be equal to 1 or 0" )
return
end
if x ~= 0 or 1 then
print( "X must be equal to 1 or 0" )
return
end
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
如果我理解正确,默认情况下Lua会在发生错误时调用调试库"debug.traceback".
但是,当将Lua嵌入到C代码中时,就像这里的示例中所做的那样: 简单的Lua API示例
我们只在堆栈顶部提供错误消息.
即
if (status) {
/* If something went wrong, error message is at the top of */
/* the stack */
fprintf(stderr, "Couldn't load file: %s\n", lua_tostring(L, -1));
/* I want to print a stacktrace here. How do I do that? */
exit(1);
}
Run Code Online (Sandbox Code Playgroud)
初始错误后如何从C打印堆栈跟踪?
假设我有一个像这样定义的表:
myTable = { myValue = nil, myOtherValue = nil}
我将如何在这样的每个时尚循环中迭代它?
for key,value in myTable do --pseudocode
value = "foobar"
end
Run Code Online (Sandbox Code Playgroud)
此外,如果它有帮助,我真的不关心关键,只关心价值.