如何阻止Raku自动展平仅包含单个子列表的嵌套列表?
问题原因
Raku中圆括号默认仅承担分组作用,不会单独构造列表。你编写的((1, 2))外层圆括号仅做分组处理,内层列表会被直接展平填充到外层数组中,最终得到的@list_of_one_list是包含1、2两个元素的单层数组,自然会输出两行结果。
解决方案
以下三种常用方式都可以阻止单元素嵌套列表被自动展平:
方案1:使用
$前缀或item()函数将内层列表标记为标量项,强制作为单个元素存入外层数组
代码示例:sub print_lists(@input) { .say for @input } my @list_of_one_list = $(1, 2); print_lists(@list_of_one_list);输出结果:
(1 2)方案2:在外层列表末尾添加尾随逗号,明确告知编译器外层为包含单个元素的列表
代码示例:my @list_of_one_list = (1, 2), ; print_lists(@list_of_one_list);运行效果和方案1完全一致。
方案3:使用方括号
[]构造内层数组,Array对象会默认作为单个元素存入外层数组
代码示例:my @list_of_one_list = [1, 2]; print_lists(@list_of_one_list);
内容的提问来源于stack exchange,提问作者Hives
相关产品推荐
相关产品推荐

