Возможно ли в Scala иметь функции / методы внутри пакета {}?
В настоящее время я слежу за статьей мисс Вием Зайн (особенно о ZIO): Сделайте свою программу тестируемой.
но я не мог пройти
package console {
def println(line: String): ZIO[Console, Nothing, Unit] =
ZIO.accessM(_.console println line)
val readLine: ZIO[Console, Nothing, String] =
ZIO.accessM(_.console.readLine)
}
Я читал на странице alvin alexander, но все дело в области охвата.
Пробовал в intellij, но жалуется.
Может ли это быть
package object console {
...
}
вместо того package console {}
?
Или это Scala 3? Или я что-то не так делаю?
1 ответ
В Scala 2 у нас есть концепция объектов пакета. Здесь есть примеры: https://www.scala-lang.org/docu/files/packageobjects/packageobjects.html.
Я думаю, что отсутствует фрагмент кода из "статьи Wiem Zine" object
ключевое слово, значит, вы правы, оно должно быть: package object console
, поскольку весь пример находится на ZIO и Scala 2.x. Насколько я знаю, ZIO для Scala 3 пока нет:-)
@Thilo также прав в том, что Scala 3 позволяет нам использовать определения верхнего уровня прямо в файле без необходимости переносить их в блок. До Scala 3 можно было использоватьpackage object
чтобы получить общий код пакета.