我在Scala中看到了以下函数:
def sqrtIter(guess: Double, x: Double): Double =
if (isGoodEnough(guess, x)) guess
else sqrtIter(improve(guess, x), x)
解释:
请注意,sqrtIter是递归的,右侧自称
有人可以在这里解释“右手边”的意思吗?
答案 0 :(得分:5)
右侧(rhs)和左侧(lhs)是常用词,用于描述由分隔符分隔的边。
对于Scala,分隔符号是等号。这意味着lhs总是指定一个定义,比如
def sqrtIter(guess: Double, x: Double): Double
而rhs总是指定实现,比如
if (isGoodEnough(guess, x)) guess
else sqrtIter(improve(guess, x), x)
最后lhs,rhs和分隔符符号形成整个语句:
<lhs> = <rhs>
答案 1 :(得分:0)
之所以这样,是因为要计算该返回类型,Scala编译器必须在右侧查看,并且由于square-root-Iter函数是递归的,因此需要将其堆叠在一个循环中。要打破这种循环,我们要求递归函数始终具有 explicit 返回类型。