Raku使用Z~ zip运算符拼接多文件同序行时如何添加空格分隔
Raku多文件同序行拼接添加空格分隔的修改方法
你当前使用的代码say $_ for [Z~] @*ARGS.map: *.IO.lines;中,[Z~]是将压缩元操作符Z和字符串拼接操作符~结合,会把多个文件的对应行直接无间隔拼接,因此得到bluesky这类输出。
要添加空格分隔,直接修改为以下写法即可:
say $_.join(' ') for [Z] @*ARGS.map: *.IO.lines;
逻辑说明
- 先用
[Z]把多个输入文件的同序行压缩为逐个的元组,比如文件A第一行blue和文件B第一行sky会被组合为元组('blue', 'sky') - 对每个元组调用
join(' '),就会用空格作为分隔符拼接元组内的所有元素,最终输出blue sky - 该写法对3个及以上的输入文件同样生效,会自动在每两个相邻文件的行内容之间插入空格
如果你需要使用其他分隔符,只需要把join方法的参数替换为对应的内容即可,比如要用制表符分隔就修改为join("\t")。
内容的提问来源于stack exchange,提问作者Jan Bodnar
相关产品推荐
相关产品推荐

