当我没有用注释告诉它时,我希望编译器在将尾递归应用于我的一个函数时警告我。这可能吗?
动机:我很少写无限循环作为逻辑错误的问题,但我已经完成了拼写错误(是的,这是可能的)。通常递归无限循环只是告诉你堆栈溢出异常有什么问题,但如果它们被递归编译尾部,它只是挂起。
忘记new
关键字与具有默认参数的案例类结合是一个很好的例子,我愚蠢地偶然发现了两次:
case class A(a: Int, b: Int = 1)
object A {
def apply(a: Int): A = A(a)
导致没有 SO 的无限循环,但def apply(a: Int): A = new A(a)
不会