【问题标题】:What is the meaning of tilde arrow in this context?在这种情况下,波浪箭头的含义是什么?
【发布时间】:2014-05-21 06:14:14
【问题描述】:

这是来自https://github.com/eigengo/activator-spray-twitter/blob/master/src/main/scala/core/tweetstream.scala的代码

~>(波浪号箭头)运算符是做什么的?我想那一定是HttpRequest的操作符,但是我在spray API中找不到这样的操作符。

我知道authorize是一个返回(HttpRequest => HttpRequest)的函数,所以val rq一定是一个HttpRequest,它被authorize的返回函数应用后返回值。

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 _ =>
  }

提前致谢!

【问题讨论】:

    标签: scala akka spray


    【解决方案1】:

    操作符只是一个函数,它是隐式定义的,见line 32 here

    只要把它想象成 compose。运算符将左侧的值作为输入填充到右侧的函数中。

    关于如何自己找出类似内容的提示:将项目加载到 intellij idea 或 scala-IDE 中,然后按住 ctrl 单击符号。 IDE 将带您进入定义。

    【讨论】:

      猜你喜欢
      • 2011-11-26
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 2011-12-29
      • 2020-04-04
      • 2017-03-28
      • 2016-08-26
      相关资源
      最近更新 更多