Что означает стрелка тильды в этом контексте?

Это код с https://github.com/eigengo/activator-spray-twitter/blob/master/src/main/scala/core/tweetstream.scala

Что делает оператор ~>(тильда)? Я думаю, что это должен быть оператор HttpRequest, но я не смог найти такой оператор в API спрея.

Я могу понять, что авторизация - это функция, которая возвращает (HttpRequest => HttpRequest), поэтому val rq должен быть HttpRequest, который возвращает значение после применения возвращаемой функцией авторизации.

def receive: Receive = {
    case query: String =>
      val body = HttpEntity(ContentType(MediaTypes.`application/x-www-form-urlencoded`), s"track=$query")
      val rq = HttpRequest(HttpMethods.POST, uri = uri, entity = body) ~> authorize
      sendTo(io).withResponsesReceivedBy(self)(rq)
    case ChunkedResponseStart(_) =>
    case MessageChunk(entity, _) => TweetUnmarshaller(entity).fold(_ => (), processor !)
    case _ =>
  }

Заранее спасибо!


person nine    schedule 08.04.2014    source источник


Ответы (1)


Оператор — это просто функция, и он определен неявно, см. строка 32 здесь.

Просто думайте об этом как о сочинении. Оператор берет значение слева и вставляет его в качестве входных данных в функцию справа.

Совет о том, как самостоятельно узнать о подобных вещах: загрузите проект в intellij idea или scala-IDE и просто щелкните символ, удерживая нажатой клавишу CTRL. IDE приведет вас к определению.

person rompetroll    schedule 08.04.2014