Возможно ли в Scala иметь функции / методы внутри пакета {}? - PullRequest
0 голосов
/ 20 сентября 2019

В настоящее время я слежу за статьей мисс Вим Зайн (в частности, по 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)
}

Я прочитал на странице Элвина Александера , но все дело в области видимости.

Я попробовал это в intellij, но он жалуется.

Можетэто будет

package object console {
...
}

вместо package console {}?

Или это Scala 3?Или я что-то не так делаю?

1 Ответ

1 голос
/ 21 сентября 2019

В Scala 2 у нас есть концепция объектов пакета.Вот примеры: https://www.scala -lang.org / document / files / packageobjects / packageobjects.html .

Я думаю, что фрагмент кода из "статьи Вима Зина" отсутствует objectключевое слово, так что вы правы, это должно быть: package object console, так как весь пример на ZIO и Scala 2.x.Для Scala 3 пока нет ZIO, насколько я знаю: -)

@ Thilo также прав, что Scala 3 позволяет нам использовать определения верхнего уровня прямо в файле без необходимости переноса в блок,До Scala 3 можно использовать package object для получения общего кода пакета.

...