我用SBT 0.11.2创建了一个Scala/Java混合项目.我的JUnit测试配置是
resolvers += "twitter.com" at "http://maven.twttr.com/"
seq(com.github.retronym.SbtOneJar.oneJarSettings: _*)
libraryDependencies += "com.novocode" % "junit-interface" % "0.10-M2" % "test"
Run Code Online (Sandbox Code Playgroud)
当我在Scala中编写JUnit测试用例时@Test,一切顺利.但是当我编写Java JUnit测试用例,然后test在sbt中运行时,Java JUnit测试无法重新编译.仅执行用Scala编写的测试用例.
如何让sbt同时识别我的Java和Scala测试用例?
我是scala的新手,今天,当我遇到此akka 源代码时,我感到困惑:
def traverse[A, B](in: JIterable[A], fn: JFunc[A, Future[B]],
executor: ExecutionContext): Future[JIterable[B]] = {
implicit val d = executor
scala.collection.JavaConversions.iterableAsScalaIterable(in).foldLeft(
Future(new JLinkedList[B]())) { (fr, a) ?
val fb = fn(a)
for (r ? fr; b ? fb) yield { r add b; r }
}
}
Run Code Online (Sandbox Code Playgroud)
为什么有意使用隐式参数编写代码?为什么不能这样写:
scala.collection.JavaConversions.iterableAsScalaIterable(in).foldLeft(
Future(new JLinkedList[B](),executor))
Run Code Online (Sandbox Code Playgroud)
是否不对新的隐式变量进行标量d?这样做有什么好处吗?目前,我仅发现隐式会增加代码的歧义。