Scala: хотите реализовать функцию, которая будет вызываться перед каждым методом того же класса (что-то вроде реализации @before)) - PullRequest
0 голосов
/ 08 апреля 2020

Есть ли способ вызвать функцию по умолчанию перед вызовом любой другой функции в классе?

Я не хочу использовать фреймворки и хочу реализовать в чистом виде Scala.

Что я хотел сделать, так это иметь некоторую функцию в классе, которая проверяет, есть ли у пользователя доступ к вызываемому методу при вызове метода того же класса.

1 Ответ

0 голосов
/ 09 апреля 2020

Это делается простым способом с помощью частного конструктора, пользовательского apply и сопутствующего объекта.

  case class Foo private (bar: Bar){
    def methYouWantToCall: Unit = ???
  }
  object Foo {
    def apply(bar: Bar): Foo = {
      val foo = new Foo(bar)
      foo.methYouWantToCall
      foo
    }
  }

Следовательно, methYouWantToCall должна быть побочной функцией с возвращаемым типом Unit. Поскольку вы используете scala, существует множество способов избежать таких.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...