Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Что значит, если черта начинается с себя: Актер

Автор вопроса: user3663882Ответов: 1

Я не совсем хороший программист на Scala, и мне нужна помощь в понимании синтаксиса. Вот trait Я борюсь с:

trait ActorTracing extends AroundReceiveOverrideHack { self: Actor =>

  protected def serviceName: String =
    this.getClass.getSimpleName

  implicit def any2response[T](msg: T): ResponseTracingSupport[T] =
    new ResponseTracingSupport(msg)

  implicit lazy val trace: TracingExtensionImpl =
    TracingExtension(context.system)

  override protected final def aroundReceiveInt(receive: Receive, msg: Any): Unit =
    msg match {
      case ts: BaseTracingSupport if receive.isDefinedAt(msg) =>
        trace.start(ts, serviceName)
      case _ =>
    }
}

Кажется, что тело признаков начинается с литерала Function1. self:Actor =>... Что бы это значило здесь, в этом примере?

  • Может быть продублировано: stackoverflow.com/questions/10291176/ pianista 23.08.2016

functionscalatraits

Ответы

Ответ 1 · рейтинг 4 · Stephen Carman

Он определяет зависимость класса Актера, что означает, что любой класс, который расширяет ActorTracing, также должен расширять Actor. Это в основном основано на DI и шаблоне Cake в Scala, который представляет собой идею создания слоев программного обеспечения.

Таким образом, в этом примере в основном говорится, что ActorTracing нельзя использовать ни с чем, что также не расширяет Actor.

Вот действительно хорошая статья об этом. http://jonasboner.com/real-world-scala-dependency-injection-di/

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы