scala jrebel超类更改

scala jrebel超类更改,scala,compiler-construction,Scala,Compiler Construction,我在Scala中使用JRebel,并且我经常遇到需要重新启动服务器的情况,因为如果超类被更改,JRebel无法加载类。这主要是在我更改匿名函数时完成的,我可以从JRebel错误描述中推断:类“mypackage.NewBook$$anonfun$2”超类已从“scala.runtime.AbstractFunction1”更改为“scala.runtime.AbstractFunction2”,并且无法重新加载。有什么办法,我如何设计代码来避免这种情况?scala编译器是否将函数从源代码中出现的

我在Scala中使用JRebel,并且我经常遇到需要重新启动服务器的情况,因为如果超类被更改,JRebel无法加载类。这主要是在我更改匿名函数时完成的,我可以从JRebel错误描述中推断:
类“mypackage.NewBook$$anonfun$2”超类已从“scala.runtime.AbstractFunction1”更改为“scala.runtime.AbstractFunction2”,并且无法重新加载。
有什么办法,我如何设计代码来避免这种情况?scala编译器是否将函数从源代码中出现的一个函数中进行编号?

正在更改的数字指的是函数参数的数量。
AbstractFunction1
是单参数函数,而
AbstractFunction2
是双参数函数。解决这个问题的一种方法是对函数进行curry或tuple处理,使它们始终是单参数函数

是的,匿名函数会按照您的建议自动命名。如果在现有匿名单参数函数之前插入新的匿名双参数函数,则会显示原始函数的类型已更改