假设您有一个只打印格式化参数的函数:
__print_spec_result() {
printf '%s %s%s (%.3f s)%s\n' "$1" "$2" "$cyan" "$3" "$reset"
}
此处,$1
和$2
是函数的参数,$cyan
和$reset
是常量。
这个功能在功能意义上是纯粹的吗?
答案 0 :(得分:3)
不,因为printf是不纯的。
见wiki:
printf()是不纯的,因为它导致输出到I / O设备作为一方 效果
从另一个SO问题和他的回答: Why is printf() an impure function?
printf是不纯的,因为它的结果有"副作用" - 特别是,它在屏幕上(或在文件中等)打印一些东西。 如果它是纯净的,那么你可以称它为十亿次并确定 什么都不会发生。但是,如果你真的打电话给printf一百万 时代,用户肯定会有所不同 - 它填满了他的 屏幕(或磁盘空间,或其他)。很明显,它并不纯粹。