scala jrebel 超类更改

问题描述 投票:0回答:1

我将 JRebel 与 Scala 一起使用,并且经常遇到需要重新启动服务器的情况,因为如果超类发生更改,JRebel 无法加载类。这主要是在我更改匿名函数时完成的,因为我可以从 JRebel 错误描述中推断出:

Class 'mypackage.NewBook$$anonfun$2' superclass was changed from 'scala.runtime.AbstractFunction1' to 'scala.runtime.AbstractFunction2' and could not be reloaded

有什么办法,如何设计我的代码来避免这种情况? scala 编译器是否会获取这些函数,并按照它们在源代码中出现的方式对它们进行编号?

scala jrebel
1个回答
2
投票

变化的数字是指函数参数的数量。

AbstractFunction1
是单参数函数,而
AbstractFunction2
是双参数函数。 解决这个问题的一种方法是柯里化或元组你的函数,以便它们始终是单参数函数。

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

© www.soinside.com 2019 - 2024. All rights reserved.