如何在Lua中使用嵌套列表

我正在尝试解决99个Lisp问题中的这个问题

将一个嵌套列表结构展平。

将列表(可能包含列表元素)转换为'flat' 列表,通过递归地替换每个列表的元素来实现。

示例:

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

提示:使用预定义的函数列表和附加操作。

问题是,我不知道如何开始创建那个嵌套的列表,所以我可以尝试自己进行展平。请帮帮我,谢谢

点赞
用户2858170
用户2858170

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

来自 Lua 手册:

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

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

当然包括表。

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

假设 a,b,c,d 和 e 均为字符串,则列表如下所示:

local t = {"a", {"b", {"c""d"}, "e"}
2021-04-12 06:55:17