标签: lua

如何在Lua脚本中确定系统的操作系统?

好吧我需要从Lua脚本确定系统的操作系统,但Lua本身没有API,所以我使用os.getenv()和查询环境变量.在Windows上检查环境变量"OS"给了我系统操作系统的名称,但是在Windows和大多数Unix上都有一些可以检查的变量吗?

lua environment-variables

19
推荐指数
3
解决办法
9360
查看次数

开始Lua脚本

我正处于一个被迫学习Lua的阶段,所以你对我这样做有什么建议吗?除了PHP之外,我没有其他任何脚本语言的经验.

那么,关于"先行Lua"的一些建议 - 页面?

编辑

作为精彩教程页面的补充,您能否建议我能制作的任何"程序"能帮助我学习Lua吗?想象一下,我想学习C++中的指针,我会创建一个链接列表.我想触及Lua的基础知识,但同时也要接受相当高级的东西.

scripting lua

19
推荐指数
2
解决办法
1万
查看次数

Lua Wrapper for C#?

我希望将Lua嵌入到我的C#应用​​程序中,我认为C#的lua API周围有一个包装器,但是不记得它是什么.有人能指出我的方向吗?

c# lua embedding

19
推荐指数
1
解决办法
2万
查看次数

通过C++中的Lua表迭代?

我正在尝试将表从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)

c++ lua lua-table

19
推荐指数
2
解决办法
2万
查看次数

为什么Lua默认为全局变量?

这些天我最喜欢的语言是Lua.我只有一个问题,为什么它的默认行为是函数中的变量是全局的?在类似的语言Icon中,有一个关键字"global",当一个人真正想要使用全局而不是自然行为来默认为local时使用它(我在五分钟之前再次被它咬了).如果有人能告诉我背后的理性(比如我所知道的范围困难导致Lua中没有"继续"关键字),我会对此感觉更好.

lua

19
推荐指数
1
解决办法
4768
查看次数

如何在emacs lua-mode中配置缩进?

在这里完成emacs新手.

我在Ubuntu上使用emacs 23.1.1和emacs入门套件.我主要在lua模式下工作(安装时package-install lua-mode).

我需要调整缩进的工作方式,因此它符合我的编码指南.

准则是:

  • 标签到空间;
  • 每个缩进两个空格;
  • 每行最多80个字符,没有尾随空格.

例:

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 …

emacs lua lua-mode

19
推荐指数
2
解决办法
5965
查看次数

在Lua中模拟+ =,有可能吗?

有人告诉我有关超载操作员的问题,但我甚至不确定如何开始这样做.我试图做的是改变:

table["key"]=table["key"]+12345
Run Code Online (Sandbox Code Playgroud)

成

table["key"]+=12345
Run Code Online (Sandbox Code Playgroud)

甚至使用一个功能,这将是美妙的.我已经搜索过,但找不到答案,所以我希望有人可以指导我或者直接回答问题.如果做它的缩写形式最终将是最短的方式,那么我想我会坚持这一点.我只是想尽可能多地保存击键,因为我确实有数百个可以实现的地方.谢谢!

lua operator-overloading

19
推荐指数
1
解决办法
2万
查看次数

不等于这个或在Lua中

我试图验证变量不等于这个或那个.我尝试使用以下代码,但都不起作用:

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)

有没有办法做到这一点?

variables lua if-statement operators

19
推荐指数
3
解决办法
10万
查看次数

使用嵌入式lua从C代码打印stacktrace

如果我理解正确,默认情况下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打印堆栈跟踪?

lua stack-trace traceback lua-api

19
推荐指数
3
解决办法
1万
查看次数

"对于具有键值对的lua表中的每个"循环

假设我有一个像这样定义的表:

myTable = { myValue = nil, myOtherValue = nil}

我将如何在这样的每个时尚循环中迭代它?

  for key,value in myTable do --pseudocode
        value = "foobar"
  end
Run Code Online (Sandbox Code Playgroud)

此外,如果它有帮助,我真的不关心关键,只关心价值.

lua lua-5.2

19
推荐指数
1
解决办法
6万
查看次数