6

查看https://docs.raku.org/language/pod#Lists。我看不到创建编号列表的方法:

有没有无证的方法可以做到这一点?

4

2 回答 2

5

目前(截至 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上的(不幸的是非常短)部分。

于 2022-01-12T23:32:41.700 回答
1

只需使用列表和循环

    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
于 2022-01-12T23:14:58.117 回答