Объект ответа scala.Unit

#scala #scalatra

Вопрос:

У меня есть действие, которое возвращает Unit :

 post("/settings") {
      blahblahblah...
      Unit
    }
 

Ранее клиент получил пустой ответ.

Но после того, как я обновил версию Scalatra с 2.5.0 до 2.7.1 и Java с 8 до 11, ответ теперь содержит следующий текст:

 object scala.Unit
 

введите описание изображения здесь

Как я могу это исправить?

Комментарии:

1. Не могли бы вы уточнить «объект scala. Единица стала клиентом в теле» ?

2. Внутри ответа Chrome показывает объект scala.Unit…

Ответ №1:

Возвращает Unit значение () вместо Unit сопутствующего объекта (который имеет тип Unit.type и не является экземпляром типа Unit ).

 post("/settings") {
  blahblahblah...
  ()
}
 

В scala 2.13 ваш код просто больше не будет компилироваться. Вы получаете сообщение об ошибке:

 `Unit` companion object is not allowed in source; instead, use `()` for the unit value
 

Комментарии:

1. Почему раньше возвращаемое устройство работало правильно?

2. Я не знаю скалатру. Возможно, тип Unit был выведен по какой-то причине, что приводит () к вставке значения компилятором.

3. Хм… Это сработало, но я все еще не понимаю, почему это работало раньше, но теперь это не так=( Если я не ошибаюсь, то () =Единица измерения