我在Scala中使用JRebel,我经常遇到需要重启服务器的情况,因为如果超类发生了变化,JRebel将无法加载类。这主要是在我更改匿名函数时完成的,因为我可以从JRebel错误描述中推断出来:
Class 'mypackage.NewBook$$anonfun$2' superclass was changed from 'scala.runtime.AbstractFunction1' to 'scala.runtime.AbstractFunction2' and could not be reloaded。
有没有办法,我如何设计我的代码来避免这种情况?scala编译器是否接受这些函数,按照它们在源代码中出现的顺序从1开始编号?
发布于 2010-12-29 08:24:18
正在变化的数字指的是函数参数的数量。AbstractFunction1是一个单参数函数,而AbstractFunction2是一个双参数函数。解决这个问题的一种方法是对函数进行curry或tuple,使它们始终是单参数函数。
是的,匿名函数会按照您的建议自动命名。如果在现有的匿名单参数函数之前插入一个新的匿名双参数函数,则看起来原始函数的类型发生了更改。
https://stackoverflow.com/questions/4550442
复制相似问题