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

如何以更惯用的方式修改多层哈希深层的modified字段

优化多层哈希修改的惯用写法

针对你这种三层嵌套哈希(%sources{$lang}{$filename}{$attribute})修改所有底层modified字段的需求,可以利用Raku的**feed运算符(==>)**结合链式调用,把多层循环简化成更简洁的表达式,同时保持可读性:

优化后的代码

%sources.values
==> map { .values }
==> map { .grep({ .key eq 'modified' }) }
==> map { .value = transform-modified(.value) };

或者更紧凑的无feed运算符写法:

%sources.values.map(*.values).map(*.grep(*.key eq 'modified')).map({ .value = transform-modified(.value) });

代码说明

  • %sources.values:取出第一层哈希(按语言分组)的所有值,即各语言对应的文件哈希集合
  • map { .values }(或简写map(*.values)):提取每个文件哈希的所有值,也就是单个文件对应的属性哈希集合
  • map { .grep({ .key eq 'modified' }) }(或简写map(*.grep(*.key eq 'modified'))):筛选出每个属性哈希中键为modified的键值对
  • 最后一个map:对筛选出的目标键值对,调用transform-modified函数更新其值

如果是不确定层级的嵌套哈希,还可以用深度遍历的方式,但针对固定三层的结构,上面的写法已经足够简洁高效。

内容的提问来源于stack exchange,提问作者Richard Hainsworth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:32:32