Ruby的Unix命令管道的"Object#tap"的惯用类比?



Ruby的Unix命令流水线Object#tap有惯用的类比吗?

用例:在管道中,我想执行一个命令来实现其副作用,但隐式返回输入,以免破坏管道的链接。例如:

echo { 1, 2, 3 } |
  tr ' ' 'n' |
  sort |
  tap 'xargs echo' | # arbitrary code, but implicitly return the input
  uniq

我来自Ruby,我会这样做:

[ 1, 2, 3 ].
  sort.
  tap { |x| puts x }.
  uniq

tee 命令与此类似;它将其输入写入标准输出以及一个或多个文件。我相信,如果该文件是进程替换,你会得到同样的效果。

echo 1 2 3 | tr ' ' 'n' | sort | tee >( **code** ) | uniq

进程替换中的代码将从其标准输入中读取,这应该与调用uniq最终看到的内容相同。

相关内容

  • 没有找到相关文章

最新更新