美文网首页收藏js css html
523. 【Lua】类型和值(三)

523. 【Lua】类型和值(三)

作者: 七镜 | 来源:发表于2022-12-18 05:55 被阅读0次

一、表(Table)

当调用函数 math.sin 时,我们可能认为是“调用了 math 库中函数 sin”;而对于 Lua 语言来说,其实际含义是“以字符串"sin"为键检索表math”

Lua 语言中的表本质上是一种辅助数组(associative array),这种数组不仅可以使用数值作为索引,也可以使用字符串或其他任意类型的值作为索引(nil 除外)。

使用构造器表达式(constructor expression)创建表,其最简单的形式是{}:

> a = {}
> k = "x"
> a[k] = 10
> a[20] = "great"
> a["x"]
10
> k = 20
> a[k]
great
> a["x"] = a["x"] + 1
> a["x"]
11

表永远是匿名的,表本身和保存表的变量之间没有固定的关系:

> a = {}
> a["x"] = 10
> b = a        -- 'b' 和 'a' 引用同一张表
> b["x"] = 20
> a["x"]
20
> a = nil     -- 只有 'b' 仍然指向表
> b = nil     -- 没有指向表的引用了
  • 对于一个表而言,当程序中不再有指向它的引用时,垃圾收集器会最终删除这个表并重用其占用的内存。

二、遍历表

我们可以使用 paris迭代器遍历表中的键值对:

> t = {10, nil, 3, '4'}
> #t
4
> t[4] = nil
> #t
3
> t[3] = nil
> #t
1
> t = {10, print, x = 12, k = 'hi'}
> t
table: 0000000001178370
> for k, v in pairs(t) do
>> print(k, v)
>> end
1       10
2       function: 0000000065b9cff0
k       hi
x       12
  • 受限于表在 Lua 语言中的实现机制,遍历过程中元素的出现顺序可能是随机的,相同的程序再每次运行时也可能产生不同的顺序。唯一可以确定的是,在遍历的过程中,每个元素会且只会出现一次。

对于列表而言一使用 ipairs 迭代器:

> t = {10, print, 12, "hi"}
>
> for k, v in ipairs(t) do
>> print(k, v)
>> end
1       10
2       function: 0000000065b9cff0
3       12
4       hi
  • 此时,Lua 会确保遍历是按照顺序进行的。

另一种遍历序列的方法是使用数值型 for 循环:

> t= {10, print, 12, "hi"}
> for k = 1, #t do
>> print(k, t[k])
>> end
1       10
2       function: 0000000065b9cff0
3       12
4       hi

相关文章

  • lua 的值类型

    lua 的值类型 lua 是动态类型的语言,即是说类型附着于值而不是变量。在 lua 脚本里,变量是没有类型的,只...

  • lua - 类型和值

    Lua是动态类型语言,变量不要类型定义。Lua中有8个基本类型分别为:nil、boolean、number、str...

  • Lua 快速笔记(一) type

    参考programing in lua 注释 值和类型 运算符 表 赋值 注释 值和类型 nil 未初始化的变量值...

  • Lua 数据类型

    Lua是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。 Lua中...

  • lua学习之类型与值篇

    类型与值 lua 是动态类型的语言 在语言中没有类型定义的语法 每个值都携带有它的类型信息 8种基础类型 用 ty...

  • Lua 完全教程

    Lua 环境安装 Lua 基本语法 Lua 数据类型 Lua 数据类型:nil(空) Lua 数据类型:boole...

  • 第二章 类型与值

    1. Lua是一种动态类型的语言。在语言中没有类型定义的语法,每个值都携带了它自身的类型信息。在Lua中有8中基础...

  • Lua学习笔记(二):类型和值

    Lua是动态类型语言,变量不需要类型声明,每一个变量都可能包含任一种类型值。一般情况下,同一变量表示不同类型的值会...

  • Lua学习三 数据类型

    Lua学习三 数据类型 nil 只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。bool...

  • lua入门笔记7 字符串库

    基础知识 Lua中的string和c#中相同,string类型的值一旦改变,便要为新值开辟空间,并指向此空间。也就...

网友评论

    本文标题:523. 【Lua】类型和值(三)

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