将消息发送到Scala中的函数
我正在通过Bruce Tate的
Seven Languages in Seven Weeks工作,我很难理解他的sizer.scala(Scala:第3天)的实现.特别是,请考虑以下Singleton对象
object PageLoader { def getPageSize(url : String) = Source.fromURL(url).mkString.length } 以及使用actor的方法,计算urls数组给出的每个网页中的字符数. def getPageSizeConcurrently() = { val caller = self for(url <- urls) { actor { caller ! (url,PageLoader.getPageSize(url)) } } for(i <- 1 to urls.size) { receive { case (url,size) => println("Size for " + url + ": " + size) } } } >自我指的是什么? getPageSizeConcurrently?自我可以引用一个函数吗? 更新:有问题的代码只使用self一次,但它确实从以下import语句开始. import scala.io._ import scala.actors._ import Actor._ 看看the Scala API,看起来是the 解决方法
Actor伴侣对象上有一个self方法.从
scaladoc:
我猜你的代码已经导入了Actor对象,并且它是你的代码正在调用的Actor对象上的self方法.通过这种方式,您可以获得对您所在的主actor线程的引用,并且您开始获取页面大小的匿名actor可以将消息发送回您所在的线程. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |