查看https://docs.raku.org/language/pod#Lists。我看不到创建编号列表的方法:
- 一
- 三
- 四
有没有无证的方法可以做到这一点?
目前(截至 2022 年 1 月)没有在 Pod6 中使用有序列表的实施方式。
历史设计文档包含有序列表的Pod6 语法,据我所知,这仍然是我们想要添加的内容。一旦实现了该语法,您将能够编写如下内容:
=item1 # Animal
=item2 # Vertebrate
=item2 # Invertebrate
=item1 # Phase
=item2 # Solid
=item2 # Liquid
=item2 # Gas
这将产生如下输出:
1. Animal
1.1 Vertebrate
1.2 Invertebrate
2. Phase
2.1 Solid
2.2 Liquid
2.3 Gas
(尽管渲染列表的确切语法取决于 Pod 渲染器的实现。)
但在实现之前,没有任何方法可以使用 Pod6 语法来创建有序列表。
编辑:
我刚刚检查了实际解析的 Pod6,看起来(令我惊讶的是)我上面显示的有序列表语法实际上是在内部解析的。例如,say $=pod[5].raku
使用 Pod6 运行显示以下内容(基于该=item2 # Liquid
行):
Pod::Item.new(level => 2, config => {:numbered(1)}, contents => [Pod::Block::Para.new(config => {}, contents => ["Liquid"])])
这样解析工作就到位了;它只是Pod::To::_
需要添加支持的渲染器。(甚至可能有一些支持。我知道 RakudoPod::To::Text
和 Raku Pod::To::HTML
(v0.8.1)目前都没有呈现有序列表。)
根据您所针对的输出格式,您当然可以自己编写有序列表(如果您要渲染为纯文本,这很容易,如果您要打印为 HTML,则更烦人)。当然,这确实牺牲了 Pod6 的多输出格式支持,这是它的关键特性之一。
对于不牺牲 Pod 多输出特性的解决方法,您可能需要研究以编程方式操作/重新格式化 Pod 文本。如果您这样做,首先要查看的文档是有关访问 Pod的 Pod6 部分和DOC phaser上的(不幸的是非常短)部分。
只需使用列表和循环?
my @list = [ (1, 2, 3), (1, 2, ),
[<a b c>, <d e f>],
[[1]]];
for @list -> @element {
say "{@element} → {@element.^name}";
for @element -> $sub-element {
say $sub-element;
}
}
# OUTPUT:
#1 2 3 → List
#1
#2
#3
#1 2 → List
#1
#2
#a b c d e f → Array
#(a b c)
#(d e f)
#1 → Array
#1