文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Programming in Scala ch30 (Actor..

Programming in Scala ch30 (Actor..

时间:2010-09-27  来源:jamesqiu

  

l  采用不可变消息

l  让消息自说明

  def act() {

    loop {

      react {

        case (name: String, actor: Actor) =>

          actor ! (name, getIp(name))

      }

    }

  }

// 不易理解,因为传递的是个一般的字符串,很难指出那个actor来响应这个消息

lookerUpper ! ("www.scala-lang.org", self)

// 改为如下,则指出只有react能处理LoopupIP的actor来处理:

case class LookupIP(hostname: String, requester: Actor)

lookerUpper ! LookupIP("www.scala-lang.org", self)

// 完整程序,把请求消息和回应消息进行包装

  import actors.Actor._, actors._, java.net._

 

  case class LookupIP(name: String, respondTo: Actor)

  case class LookupResult(name: String, address: Option[InetAddress])

 

  def getIp(name: String): Option[InetAddress] = {

    try { Some(InetAddress.getByName(name))

    } catch { case _: UnknownHostException => None }

  }

 

  object NameResolver2 extends Actor {

    def act() {

      loop {

        react {

          case LookupIP(name, actor) =>

            actor ! LookupResult(name, getIp(name))

        }

      }

    }

  }

 

// 使用

scala>NameResolver2 ! LookupIP("g.cn", self)                                               

scala>self.receiveWithin(0){case LookupResult(n,a)=>println(n,a.get)}

(g.cn,g.cn/203.208.39.104)

相关阅读 更多 +
排行榜 更多 +
幸存者的命运

幸存者的命运

飞行射击 下载
精英战区3d

精英战区3d

飞行射击 下载
货运猎人

货运猎人

飞行射击 下载