我在Web上看到了许多针对Scala的ARM(自动资源管理)示例.虽然大多数看起来很像彼此,但它似乎是一种写作的通道.不过,我确实看到了一个使用延续的非常酷的例子.
无论如何,很多代码都有这种或那种类型的缺陷,所以我认为在Stack Overflow上有一个引用是个好主意,我们可以在这里投票给出最正确和最合适的版本.
我是异步编程的新手.我读了这个教程http://danielwestheide.com/blog/2013/01/09/the-neophytes-guide-to-scala-part-8-welcome-to-the-future.html,我很惊讶我是多么的轻松可以将Future纳入该计划.但是,当我使用Future with Routing时,返回类型有点错误.
get {
optionalCookie("commToken") {
case Some(commCookie) =>
val response = (MTurkerProgressActor ? Register).mapTo[..].map({...})
val result = Await.result(response, 5 seconds)
setCookie(HttpCookie("commToken", content = result._2.mturker.get.commToken)) {
complete(result._1, result._2.mturker.get)
}
case None => // ...
}
}
Run Code Online (Sandbox Code Playgroud)
我真的不想使用Await(如果我只是阻塞线程并等待5秒钟,那么异步的重点是什么?).我试图用for-comprehension或flatMap并把setCookie和complete行动里面,但返回类型是不可接受的喷雾.For-comprehension返回"Unit",并flatMap返回Future.
由于我需要设置这个cookie,我需要里面的数据.是Await解决方案吗?还是有一种简单的方式?
我想测试一个方法(使用 ScalaTest),它接受一个List值并在数据库中更新它们,Future为每个值返回一个表示更新成功的值。是否有一种惯用的方法来验证所有值都保留在数据库中?我如何知道Future从方法返回的所有s何时完成?
trait Result
case object A extends Result
case object B extends Result
def addToDB(i: String): Future[Result]
def persistUsers(users: List[String]): List[Future[Result]] = {
users.map(addToDB)
}
Run Code Online (Sandbox Code Playgroud)
我尝试过这样的事情(有效)但是有更好的方法吗?
"should update list " in {
val users = List("a","b","c")
persistUsers(users)
Thread.sleep(1000)
whenReady(db.find("a")) { result => result shouldEqual A }
.
.
.
}
Run Code Online (Sandbox Code Playgroud) 我使用 R 包ggtree绘制系统发育树,我需要知道提示的顺序,以便我可以将其与每个提示的特定信息结合起来。当然我可以手动记录订单,但是我有很多这样的树。更重要的是,与树图中显示的顺序相比,tr$tip.label 为我提供了不同的节点顺序。
我需要一些 R 脚本,它们可以从系统发育树对象中获得正确的提示顺序,当 R 绘制树时应该是相同的顺序。
那个树:

tr$tip.label 给出:
"seq6" "seq16" "seq12" "seq34" "seq5" "seq35" "seq41" "seq19" "seq22" "seq54" "seq7" "seq26" "seq9" "seq14" "seq4" "seq8" "seq33 " "seq11" "seq2" "seq13" "seq45" "seq42" "seq50" "seq3" "seq18" "seq29" "seq52" "seq53" "seq32" "seq21" "seq38" "seq51" "seq24" " seq47" "seq48" "seq43" "seq39" "seq23" "seq28" "seq1" "seq25" "seq40" "seq46" "seq36" "seq15" "seq49"
我想要的是:

每个树尖都与具有特定颜色的线对齐。