我想在 scala 的库中分组一组类似的函数。这是我在其他地方看到的两种方法。我想了解两者之间的区别。
包中定义的单例对象
// src/main/scala/com/example/toplevel/functions.scala
package com.example.toplevel
object functions {
def foo: Unit = { ... }
def bar: Unit = { ... }
}
包对象
// src/main/scala/com/example/toplevel/package.scala
package com.example.toplevel
package object functions {
def foo: Unit = { ... }
def bar: Unit = { ... }
}
比较
据我所知,第一种方法需要functions
在您想使用其功能时显式导入对象。而包对象方法允许包中的任何东西在functions
不导入它们的情况下访问这些方法。
即,com.example.toplevel.functions.MyClass
可以com.example.toplevel.functions.foo
隐式访问。
我的理解正确吗?
如果在 中没有定义类com.example.toplevel.functions
,那么这些方法似乎是等价的,这是正确的吗?