这是一个求和函数,基本上它包含一个函数,并将它从任何a
加到任何b
代码:
object sum {
def sum(f: Double => Double, lower: Int, upper: Int): Double = {
@tailrec
def iter(acc: Double, lower: Int): Double = {
if (lower > upper) acc
else iter(acc + f(lower), lower + 1)
}
iter(0, lower)
}
这有多少线程安全?
如果不是,有人可以提供如何制作的信息吗?
答案 0 :(得分:3)
只要f
是引用透明的,也就是说,它没有副作用,它完全是线程安全的。
修改强>:
您应该使用这样的代码或任何条件循环来询问的真正问题是"是否可以始终达到终止条件?"可以保证f(lower) + acc
生成的序列能够满足lower > upper
吗?例如,如果我要为upper
提供单调增加的函数,该函数小于lower
,则永远不会终止。循环将是无限的。