Каков наилучший способ группировки функций утилит, которые не принадлежат классу? В Ruby я бы сгруппировал их в модуле. Должен ли я использовать черты в Scala для того же эффекта или объектов?
Предпочтительный способ группировки служебных функций в Scala?
Ответ 1
Обычно я помещаю функции утилиты, которые семантически различаются по различным признакам и создают объект для каждого признака, например.
trait Foo {
def bar = 1
}
object Foo extends Foo
Таким образом, я наиболее гибкий. Я могу импортировать функции утилиты с помощью инструкции import
или через with
в объявлении класса. Более того, я могу легко сгруппировать разные служебные черты вместе в новый объект, чтобы упростить операции импорта для наиболее часто используемых функций полезности, например.
object AllMyUtilites extends Foo with Foo2
Ответ 2
Пакет объектов или просто простых объектов.
См., например, Scala.Predef
и scala.math
.
Ответ 3
Черты, если вы хотите, чтобы их смешивали с классами, которые будут использовать его. Объекты, если вы хотите импортировать их только.