在Scala中对实用程序功能进行分组的首选方法?

Geo*_*Geo 12 scala code-organization

对不属于类的实用程序函数进行分组的最佳方法是什么?在Ruby中,我会将它们分组在一个模块中.我应该在Scala中使用特征来获得相同的效果还是对象?

Ste*_*lis 13

通常,我将在语义上不同的实用函数放入不同的特征中,并为每个特征创建一个对象,例如

trait Foo {
  def bar = 1
}
object Foo extends Foo
Run Code Online (Sandbox Code Playgroud)

那样我最灵活.我可以通过import语句或with类声明中的函数导入实用程序函数.此外,我可以轻松地将不同的实用程序特征组合到一个新对象中,以简化最常用的实用程序函数的import语句,例如

object AllMyUtilites extends Foo with Foo2
Run Code Online (Sandbox Code Playgroud)

  • 我认为 `with` 是一种不好的做法,因为它会污染类型,灵活性较低(你可以跳过并使用 `import`s 重命名),而且你永远不需要你的类也是实用类,只有当你对你的类进行分组时公用事业在一起。所以,我会留在`object`s 或使用`with` 仅用于分组。 (2认同)

Dan*_*ral 7

打包对象或只是普通对象.

例如,参见Scala.Predefscala.math.