我正在阅读Scala风格指南:http://docs.scala-lang.org/style/naming-conventions.html
他们提到了这个:
对象
对象遵循类命名约定(camelCase with a 资本首字母)除了试图模仿一个包或一个 功能。这些情况并不经常发生,但可以预期 一般发展。:
object ast {
sealed trait Expr
case class Plus(e1: Expr, e2: Expr) extends Expr
...
}
object inc {
def apply(x: Int): Int = x + 1
}
对于"对象ast"我可能会想到一些简单的用例。但我无法想到为什么有人想要模仿一个功能"以"对象inc"的方式。感觉有点不合常规,可能会让其他开发人员感到困惑。
是否存在核心Scala库执行此操作的示例情况?或者什么时候定义这样的函数是好的做法?
答案 0 :(得分:2)
正如评论中所提到的,一个很好的例子是shapeless.Poly函数。
Poly
函数是函数的多态版本。它需要被表示为一个对象有三个主要原因:
除了技术性之外,它们在概念上起作用,因此使用相同的常规函数命名方式。