我想在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
中未定义任何类,
看来这些方法是等效的,对吗?
答案 0 :(得分:0)
最终在评论中冷落:
是的,您的理解是正确的。您的包裹中定义的所有内容 对象将可用,而无需导入。如果您使用 对象,即使在同一包中,也必须将其导入。