Я также довольно новичок в Scala, но я думаю, что в приведенном выше примере вы создаете новый анонимный объект (как вы можете сделать с Java), а затем присоединяете Trait к новому анонимному типу.
Поскольку черты Scala могут содержать код реализации, вы в основном получаете поведение черты бесплатно, предполагая, что анонимный класс удовлетворяет любым требованиям черты (например, задает значения или определяет «абстрактные» методы).
Итак, вы делаете не создание экземпляра Черты напрямую, а создание подходящего объекта, к которому Черта может присоединиться, чтобы вы могли использовать функциональность Черты без необходимости определять класс, расширяющий Черту.
Это отвечает на ваш вопрос?