标签: lua

如何检查表中是否包含Lua中的元素?

有没有检查表是否包含值的方法?我有自己的(幼稚)功能,但我想知道是否存在"正式"的东西?或者更高效的东西......

function table.contains(table, element)
  for _, value in pairs(table) do
    if value == element then
      return true
    end
  end
  return false
end
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我使用这个函数的主要原因是使用表作为集合,即没有重复的元素.还有其他我可以使用的东西吗?

lua contains unique set lua-table

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

如何通过键删除lua表条目?

我有一个lua表,我用作hashmap,即使用字符串键:

local map = { foo = 1, bar = 2 }
Run Code Online (Sandbox Code Playgroud)

我想"弹出"由其键标识的该表的元素.有一种table.remove()方法,但它只需要删除元素的索引(即数字)而不是通用键.我希望能够做到table.remove(map, 'foo'),这就是我实现它的方式:

function table.removekey(table, key)
    local element = table[key]
    table[key] = nil
    return element
end
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?

lua key lua-table

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

如何在Lua字符串中迭代单个字符?

我在Lua中有一个字符串,想要在其中迭代单个字符.但是没有我尝试过的代码和官方手册只显示如何查找和替换子串:(

str = "abcd"
for char in str do -- error
  print( char )
end

for i = 1, str:len() do
  print( str[ i ] ) -- nil
end
Run Code Online (Sandbox Code Playgroud)

lua

82
推荐指数
4
解决办法
7万
查看次数

定义函数参数的默认值

在Lua wiki中,我找到了一种为缺少参数定义默认值的方法:

function myfunction(a,b,c)
    b = b or 7
    c = c or 5
    print (a,b,c)
end
Run Code Online (Sandbox Code Playgroud)

这是唯一的方法吗?PHP风格myfunction (a,b=7,c=5)似乎不起作用.并不是Lua方式不起作用,我只是想知道这是否是唯一的方法.

lua function

82
推荐指数
5
解决办法
5万
查看次数

为什么要使用Mongrel2?

我很困惑Mongrel2服务/提供的目的是nginx还没有.

(是的,我已经阅读了手册,但我必须要过多的菜鸟才能理解它与nginx的根本区别)

我当前的Web应用程序堆栈是:
- nginx:webserver
- Lua:编程语言
- FastCGI + LuaJIT:将nginx连接到Lua
- Postgres:数据库

lua webserver nginx mongrel2

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

对于Lua上的Loop

我的任务是如何进行for循环.我已经用数字来解决这个问题,但无法用名字来解决这个问题.我想创建一个运行在名称列表中的for循环.以下是我到目前为止:

names = {'John', 'Joe', 'Steve'}
for names = 1, 3 do
  print (names)
end
Run Code Online (Sandbox Code Playgroud)

我尝试了一些其他的东西,但它只是不起作用,终端总是只列出1,2,3 ......我做错了什么?

lua loops for-loop

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

将Corona SDK中的图块加入到Breakout游戏网格的一个单词中?

我有一个游戏项目来重新实现Breakout.我想在一行上显示两个单词,每个单词.它们由砖块连接在一起.在里面,顶行是第一个名称,左对齐.底线是姓氏,右对齐.它们是从文本框输入的,如下所示呈现:

如上所述

通过的每一秒,屏幕将向网格添加可配置数量的砖块(例如,每秒五块砖块),直到两个单词看起来完整.我显示了一个由矩阵(0,1)创建的字母表.

......但我不知道如何将它们合并为一个词.我该如何加入这些信件?

这是我到目前为止所得到的:

Bricks.lua

local Bricks = display.newGroup() -- static object
local Events = require("Events")
local Levels = require("Levels")
local sound = require("Sound")
local physics = require("physics")
local Sprites = require("Sprites")
local Func = require("Func")


local brickSpriteData = 
{
    {
        name = "brick",
        frames = {Sprites.brick}
    },

    {
        name = "brick2",
        frames = {Sprites.brick2}
    },

    {
        name = "brick3",
        frames = {Sprites.brick3}
    },

}

-- animation table
local brickAnimations = {}

Sprites:CreateAnimationTable
{
    spriteData = brickSpriteData, …
Run Code Online (Sandbox Code Playgroud)

lua matrix breakout coronasdk

76
推荐指数
1
解决办法
7928
查看次数

如何创建安全的Lua沙箱?

所以Lua似乎是在我的应用程序中实现安全"用户脚本"的理想选择.

但是,嵌入lua的大多数示例似乎都包括加载所有标准库,包括"io"和"package".

所以我可以从我的解释器中排除这些库,但即使是基本库也包含访问文件系统的函数"dofile"和"loadfile".

如何删除/阻止这些不安全的函数,而不仅仅是一个甚至没有像"ipairs"函数这样的基本内容的解释器?

lua sandbox

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

Lua中的内联条件(a == b?"是":"否")?

无论如何在Lua使用内联条件?

如:

print("blah: " .. (a == true ? "blah" : "nahblah"))
Run Code Online (Sandbox Code Playgroud)

lua conditional ternary

73
推荐指数
3
解决办法
4万
查看次数

Lua - 以毫秒为单位的当前时间

是否有一种常见的方式来获取当前时间或以毫秒为单位?

os.time(),但它只提供整秒.

time lua

68
推荐指数
6
解决办法
10万
查看次数