ScalaByExample - receiveWithin方法说明

时间:2014-10-08 14:53:13

标签: scala

如果这是一个非常简单的问题,我很抱歉。有人可以解释案例语法语句如何作为receiveWithin的函数参数执行。我迷失了,因为我认为参数应该是()。



    receiveWithin ((closing.getTime() - new Date().getTime())) {
      case Offer(bid, client) =>
        if (bid >= maxBid + bidIncrement) {
          if (maxBid >= minBid) maxBidder ! BeatenOffer(bid)
            maxBid = bid; maxBidder = client; client ! BestOffer
          } else {
            client ! BeatenOffer(maxBid)
          }
      case Inquire(client) =>
        client ! Status(maxBid, closing)
      case TIMEOUT =>
        if (maxBid >= minBid) {
          val reply = AuctionConcluded(seller, maxBidder)
          maxBidder ! reply; seller ! reply
        } else {
          seller ! AuctionFailed
        }
        receiveWithin(timeToShutdown) {
          case Offer(_, client) => client ! AuctionOver
          case TIMEOUT => running = false
        }
    }

类Actor的receiveWithin方法将时间跨度作为参数 以毫秒为单位,以及函数处理邮箱中的邮件。 该功能由一系列案例给出,每个案例都指定一个模式和 对与模式匹配的消息执行的操作。 receiveWithin method选择邮箱中与其中一个匹配的第一条消息 模式并对其应用相应的操作。

0 个答案:

没有答案