美文网首页
Lua一些简单的对数组(table)的操作和封装

Lua一些简单的对数组(table)的操作和封装

作者: GCKJianshu | 来源:发表于2017-03-21 20:22 被阅读0次

Lua中没有数组,但是可以通过表(table)来模拟数组,为了便于理解,本文的所有对表的操作都称为数组,值得注意的是,Lua数组下标是从1开始,而不是0。

1.Lua之产生若干个指定范围的不重复的随机数

先直接上代码

function getNRandom(startNum, endNum, number, exceptTable) -- 一个产生不重复随机数的方法
    local cha = endNum - startNum + 1
    if cha< number then
        print("产生的个数已经超过了,检查你的随机数范围和个数是否合理")
        return
    end
    local numberTabel = {}
    local num = 0
    local isExist = false -- 用这个判断是否已经存在这个数了
    local i = 0
    while (i < number) do 
        isExist = false
        local randomNum = math.random(startNum, endNum)
        print("产生的随机数为:", randomNum)
        local function isExisting() -- 检测数组里面是否已经存在了这个随机数了,有就返回true
            if #numberTabel ~= 0 then
                for k, v in pairs(numberTabel) do 
                    if randomNum == v then
                        print("发现产生了一个相同的随机数,所以不能再加到那里面去了")
                        return true
                    end
                end
            end
            if #exceptTable ~= 0 then
                for k, v in pairs(exceptTable) do
                    if randomNum == v then
                        print("发现产生了一个已经点过的随机数,要除开,不能要")
                        return true
                    end
                end
            end 
        end
        isExist = isExisting()
        if isExist then  -- 如果已经存在了这个数,那么久返回,并且要把i-1
            
            
        else
            table.insert(numberTabel, randomNum)
            i = i + 1
        end


    end
    return numberTabel

end

参数依顺序分别为:最小的数,最大的数,产生的数的个数,要排除的数的数组(表)。
如果你传入的数范围不对,比如你传入最小为1,最大为10,你非要产生15个不同的随机数,那就是不可能的,所以这里在最前面就判断,当范围不对的时候就返回。

2.Lua之删除指定下标的数组(table)中的元素

如果是删除你知道的某一个index的元素,那当然简单了用table.remove()方法即可,但是这里我知道下标也是一个数组形式的,比如有某一个数组为tabel1 = {1, 3, 5, 7, 9},我想删除的下标的数组为removeIndexTable = {3, 5, 2}得到一个新的数组

相关文章

  • Lua一些简单的对数组(table)的操作和封装

    Lua中没有数组,但是可以通过表(table)来模拟数组,为了便于理解,本文的所有对表的操作都称为数组,值得注意的...

  • [LuaArray] 严格的 Lua 数组实现

    说点什么 由于 Lua table 的特殊构造,使用纯 Lua 实现 纯数组 是很困难的—— table 是 Ar...

  • lua表(table)

    table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。Lua table 使用关...

  • Lua table.maxn()

    前言# 今天来看一个关于table的一个简单的函数,我们知道Lua数组中的索引一般从1开始,那么数组的length...

  • Lua学习笔记(7)——数据结构

    数组 1.使用整数来索引table即可在Lua中实现数组。因此数组没有一个固定大小。 2.然而在Lua中,习惯以1...

  • lua的table相关操作

    lua中的一种重要的数据结构:table 一 table的特性让我们编程更加方便: 1 table是一种关联数组...

  • Lua学习

    Lua 学习 元表 setmetatable(table,metatable): 对指定table设置元表(met...

  • lua进阶

    lua官网在线运行代码 table面向对象语法糖 lua对table中的函数调用做了优化,使用起来像类方法,增加了...

  • lua元表

    1、Lua 元表(Metatable) setmetatable(table,metatable): 对指定tab...

  • Lua元表

    Lua元表 在Lua中,我们可以通过key找到对应的value值,但是无法对两个table进行操作。 在Lua中为...

网友评论

      本文标题:Lua一些简单的对数组(table)的操作和封装

      本文链接:https://www.haomeiwen.com/subject/vdoovttx.html