2、lua语言、table数组、循环、
内容纲要

2、lua语言、table数组、循环、

数组,这里属于从C++ 到lua 语言,此处不解释数据类型的含义。

在Lua 中,我们可以使用 table ( 表 ) 来实现数组的功能,

在 Lua 中, table 是一个一系列元素的集合,使用 大括号 进行表示,元素之间用逗号分隔.

t = {1,2,3,4,5}

  • TIP:这里数组 和C 语言 JAVA 的数组的下标不一样,Lua 中第一个元素的下标是1,第二个是2,以此类推。

  • 例如:

    t = {1,3,6,2,6}
    print(t[1])  -- 打印1
    print(t[3])  -- 打印6
    
    t[2] = 11  -- 更改数组第二个元素的值为11
    print(t[2])  -- 打印11
    
    t[6] = 66  -- 凭空创建第六个元素 并赋值为 66
    print(t[6])  --打印66
    
    print(t[20])  --打印 nil 因为不存在
  • 注意一点:一般语言中数组在创建之后就不可变,而lua 中数组是可变长度的。

    但是,目前我还不清楚 为什么lua 中数组是可变长度,底层原理难道和 C++ 中的 vector容器 是一样的吗?动态数组?

(不)简单的table

table 和传统的 数组不一样,这里的 table可以存放任意类型的数据,甚至数据的类型都可以混杂,甚至还可以存放 function 变量

但是访问方式依旧是 table 名字加下标。且能修改

file

  • Lua 的下标

    在 Lua 中,下标可以自定义, 甚至可以让下标进行跳跃式,特别灵活。

    t = {6,7,8,9}
    --上面和下面的代码等价
    t = {
      [1] = 6,
      [2] = 7,
      [3] = 8,
      [4] = 9,
    }
    
    --甚至你可以跳过某些下标
    t = {
      [1] = 6,
      [3] = 7,
      [5] = 8,
      [7] = 9,
    }
    print(t[7])
    --输出9
    
    --在声明后赋予元素值也是可以的
    t = {}--空的table
    t[101] = 10
    print(t[101])
    --输出10

    Lua 的下标不一定必须是数字,它也能是 string 类型。(特别灵活)

    file

    table 的元素有两种访问方式:1、如同数组那样使用t[] 进行访问。 2、使用table.它的元素名

下标的小测验:

t = {
 {
     price = 7.52,
     weight = 2.1,
 },
 {
     price = 8.31,
     weight = 1.4,
     year = '2018'
 },
 year = '2019'
}
print(
 t["price"],
 t[1].price,
 t[2].weight,
 t["year"]
)
  • 全局变量与 table,在Lua 中,所有的全局变量被存放在一个大 table 中, 全局变量的table 名为 _G

    file

    在Lua 中哪怕是在函数体或者循环体中定义的变量,只要没用 local 声明则它定义的都是全局变量

    t = {
    [10] = 100,
    num = 12,
    abc = {
        [3] = "abcd"
    },
    a = {
        b = {
            c = 789 
            } 
        }
    }
    
    print("t[10]可获得number类型数据100:",t[10],type(t[10]))
    print("t.num可获得number类型数据12:",t.num,type(t.num))
    print("t.abc[3]可获得string类型数据abcd:",t.abc[3],type(t.abc[3]))
    print("t.a.b.c可获得number类型数据789:",t.a.b.c,type(t.a.b.c))
  • table.concat( )

    local a = {1, 3, 5, "hello" }
    print(table.concat(a))
    print(table.concat(a, "|"))
    
    -->打印的结果:
    --135hello
    --1|3|5|hello
  • table 删减

    file

循环

  1. while循环

    while 判断内容 do
        循环体
    end
    local result = 0
    local num = 1
    
    while num <= 100 do
        result = result + num
        num = num + 1
    end
    
    print(result)
  2. for 循环

    for 临时变量名=开始值,结束值,步长 do
        循环的代码
    end

    其中,步长可以省略,默认为1

    临时变量名可以直接在代码区域使用(但不可更改),每次循环会自动加步长值,并且在到达结束值后停止循环

    下面举一个例子,我们计算从1加到100的结果:

    local result = 0
    
    for i=1,100 do
        result = result + i
    end
    
    print(result)
    • break 可以退出循环,使用if 判断退出条件,

      a = 10
      init = 1
      while i < a do
        print(init)
        init = init + 2
      end
      
      for 1,a,2 do
        print(a)
      end

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇