Ответ 1
Обычно я помещаю функции утилиты, которые семантически различаются по различным признакам и создают объект для каждого признака, например.
trait Foo {
def bar = 1
}
object Foo extends Foo
Таким образом, я наиболее гибкий. Я могу импортировать функции утилиты с помощью инструкции import
или через with
в объявлении класса. Более того, я могу легко сгруппировать разные служебные черты вместе в новый объект, чтобы упростить операции импорта для наиболее часто используемых функций полезности, например.
object AllMyUtilites extends Foo with Foo2