scala jrebel изменение суперкласса - PullRequest
1 голос
/ 29 декабря 2010

Я использую 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 функции, нумерует их как единое целое, как они появляются в исходном коде?

1 Ответ

2 голосов
/ 29 декабря 2010

Числа, которые меняются, относятся к числу аргументов функции. AbstractFunction1 - это функция с одним аргументом, а AbstractFunction2 - это функция с двумя аргументами. Одним из способов обойти это было бы каррирование или кортеж ваших функций, чтобы они всегда были функциями с одним аргументом.

И, да, анонимные функции автоматически называются так, как вы предлагали. Если вы вставите новую анонимную функцию с двумя аргументами перед существующей анонимной функцией с одним аргументом, она будет выглядеть так, как если бы тип исходной функции изменился.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...