是一个只打印其参数纯粹的函数吗?

时间:2015-06-29 09:11:22

标签: bash functional-programming

假设您有一个只打印格式化参数的函数:

__print_spec_result() {
  printf '%s  %s%s (%.3f s)%s\n' "$1" "$2" "$cyan" "$3" "$reset"
}

此处,$1$2是函数的参数,$cyan$reset是常量。

这个功能在功能意义上是纯粹的吗?

1 个答案:

答案 0 :(得分:3)

不,因为printf是不纯的。

wiki

  

printf()是不纯的,因为它导致输出到I / O设备作为一方   效果

从另一个SO问题和他的回答: Why is printf() an impure function?

  

printf是不纯的,因为它的结果有"副作用" -   特别是,它在屏幕上(或在文件中等)打印一些东西。   如果它是纯净的,那么你可以称它为十亿次并确定   什么都不会发生。但是,如果你真的打电话给printf一百万   时代,用户肯定会有所不同 - 它填满了他的   屏幕(或磁盘空间,或其他)。很明显,它并不纯粹。