【问题标题】:Is there subscript syntax to extract a diagonal from a 2D Array?是否有从二维数组中提取对角线的下标语法?
【发布时间】:2019-09-21 17:00:04
【问题描述】:

我通常可以按照syntax 在文档页面上“向下钻取/切片”到具有多个维度(和展平)的数组中。一个非常酷的功能。例如给出:

my @a=[[1,2,3],
       [4,5,6],
       [7,8,9]];

我可以使用以下方法选择上述第 2 列:

say @a[0,1,2;1]; #This output (2,5,8)

是否可以用类似的紧凑语法提取对角线 (1,5,9)?

【问题讨论】:

    标签: arrays raku matrix-indexing arrayaccess


    【解决方案1】:
    say @a[ 0,1,2 ; { $++ } ] ; # (1 5 9)
    

    所以我使用了{ $++ },而不是1,它的计算结果为1,这是一个Block

    当 Raku 遇到作为下标值的可调用代码对象时,它会为它正在评估的每个切片调用一次,在本例中为 0th、1st 和 2nd 行。

    $ 是一个匿名标量状态变量。

    【讨论】:

    • say @a[0,1,2; { $++ }];@raiph 的精彩回答 - 说明了为什么 raku 摇滚......只是提到'。是可选的。
    • @p6steve。我也认为这很好,并认为那是因为 Raku 摇滚。我不知道为什么我决定写.。感谢您的评论;我现在删除了它,因为它非常un地道。
    猜你喜欢
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 2021-12-11
    相关资源
    最近更新 更多