You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:27:02