首页 > 解决方案 > 如何在 Lua 中有嵌套列表

问题描述

我试图从 99 lisp 问题中解决这个问题

展平嵌套列表结构。
通过将每个列表替换为其元素(递归),将列表(可能将列表作为元素保存)转换为“平面”列表。
例子:

(my-flatten '(a (b (c d) e)))  
(A B C D E)

提示:使用预定义函数列表并追加。

问题是,我不知道如何创建该嵌套列表,因此我可以尝试自己将其展平。请帮忙谢谢

标签: listlua

解决方案


在 Lua 中,“可能将列表作为元素保存的列表”只是一个可能将表作为元素保存的表格。

来自 Lua 手册:

表可以是异构的;也就是说,它们可以包含所有类型的值(nil 除外)。

...

像索引一样,表字段的值可以是任何类型

这当然包括表格。

最简单的情况是local t = {{}}或对于提到的例子(a(b(cd)e))local t = {a, {b, {c, d}, e}}

假设 a,b,c,d 和 e 是字符串,您的列表将如下所示:

local t = {"a", {"b", {"c", "d"}, "e"}

推荐阅读