Предпочитаемый способ группировки служебных функций в Scala? - PullRequest
12 голосов
/ 23 апреля 2011

Каков наилучший способ группировки служебных функций, не принадлежащих классу?В Ruby я бы сгруппировал их в модуль.Должен ли я использовать черты в Scala для того же эффекта или объектов?

Ответы [ 3 ]

13 голосов
/ 23 апреля 2011

Обычно я помещаю служебные функции, которые семантически различаются, в разные черты и создаю объект для каждой черты, например,

trait Foo {
  def bar = 1
}
object Foo extends Foo

Таким образом, я самый гибкий. Я могу импортировать служебные функции через оператор import или через with в объявлении класса. Более того, я легко могу сгруппировать различные свойства утилиты в новый объект, чтобы упростить операторы импорта для наиболее часто используемых функций утилиты, например,

object AllMyUtilites extends Foo with Foo2
7 голосов
/ 24 апреля 2011

Пакетные объекты или просто простые объекты.

См., Например, Scala.Predef и scala.math.

2 голосов
/ 23 апреля 2011

Черты, если вы хотите, чтобы они были смешаны с классами, которые будут использовать его.Объекты, если вы хотите только импортировать их.

...