Я хочу сгруппировать набор похожих функций в библиотеке в Scala.
Вот два подхода, которые я видел в другом месте. Я хочу понять
различия между ними.
Объект Singleton, определенный в пакете
// 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
неявно.
Правильно ли мое понимание?
Если в * 1021 не определены классы,
кажется, что подходы были бы эквивалентны, это правильно?