如何更地道地从已有哈希中提取指定键子集创建新哈希
优雅提取哈希子集作为子例程参数的Raku实现
你可以利用Raku的哈希切片和展开操作符|来简化代码,避免重复书写键名与哈希引用:
直接简化写法
a-subroutine('param', %(:$level, |%prm{<id target caption delta>}) )
高可维护性写法(适合键较多的场景)
先定义需要提取的键列表,再通过切片生成目标子集:
my @required-keys = <id target caption delta>; a-subroutine('param', %(:$level, |%prm{@required-keys}))
语法说明
%prm{<id target caption delta>}是哈希切片语法,会从%prm中提取指定键对应的键值对,返回一个仅包含这些键的新哈希。|是展开操作符,能把切片得到的哈希的所有键值对“展开”到匿名哈希%()中,和:$level(作用域变量的简写形式)合并成最终的参数哈希。
这种写法既保持了代码简洁性,又符合Raku的惯用语法风格,彻底消除了重复冗余的代码。
内容的提问来源于stack exchange,提问作者Richard Hainsworth
相关产品推荐
相关产品推荐

