我正在尝试从现有源代码创建一个新项目.我不断收到以下错误:"无效的项目描述",项目路径"重叠另一个项目的位置"具有相同的名称.原因是我之前从源代码创建了该项目,但之后我删除了该项目并删除了整个目录,然后再次添加源代码目录.我尝试过清洁和重新启动等所有功能,但没有任何效果.我查看了我的工作区目录,但旧项目没有任何痕迹.围绕这个问题有几个问题,比如这个尝试Android记事本教程 - 练习1 - 更多问题,但没有一个答案对我有用!
斯卡拉包括在标准库的几种方法进行分类的列表,例如对列表进行排序列表,可以使用:
list.sorted
list.sortWith(_<_)
list.sortBy(x=>x)
Run Code Online (Sandbox Code Playgroud)
虽然这些可能是对列表进行排序的最简单方法,但我发现对于较大的列表,它们具有显着的性能缺陷.
例如,要排序一百万个整数,排序平均需要500毫秒,而sortWith和sortBy需要大约700毫秒.这与scala.util.Sorting.quickSort(需要大约120ms)和java.util.Arrays.sort(需要大约100ms)进行比较.对于较大的列表,随着我们进一步扩展,会观察到这种多因素差异.模式如下图所示.
这种性能滞后的原因是什么?为什么标准方法没有使用更有效的算法/实现?
在同一源树下使用sbt为多个主类生成单独的jar文件的最佳方法是什么?
项目目录看起来像这样:
project_root/
src/main/scala/
A/*.scala files for main class A
B/*.scala files for main class B
resources/
test/scala/
A/
B/
lib/
project/Build.scala
build.sbt
Run Code Online (Sandbox Code Playgroud)
请注意,A和B都具有相同的基数.Build.scala文件的具体示例会很有帮助.
当未来的演员抛出异常时会发生什么?
根据http://doc.akka.io/docs/akka/snapshot/scala/futures.html上的Akka文档:
如果Actor或调度程序正在完成Future,则无关紧要,如果捕获到Exception,则Future将包含它而不是有效结果.如果Future确实包含Exception,则调用Await.result将导致它再次被抛出,以便可以正确处理它.
在运行这段代码时,我不确定这是我所看到的:
class Worker extends Actor {
def receive = {
case i: Int => throw new RuntimeException
}
}
implicit val system = ActorSystem("MySystem")
val worker = system.actorOf(Props(new Worker), name="worker")
implicit val timeout = Timeout(5 minutes)
val future = worker ? 0
val res = Await.result(future, 10 seconds)
Run Code Online (Sandbox Code Playgroud)
根据文档,Await.result应该再次抛出异常,但我得到的是TimeoutException!有人可以澄清一下吗?
有人可以澄清为什么以下代码导致MatchError?在这种情况下,MatchError意味着什么?
class A {
def g = A.f
}
object A {
val f = "Object A"
}
class B extends A {
override val A.f = "Object B"
}
val b = new B
b.g
Run Code Online (Sandbox Code Playgroud)
鉴于这不起作用,有没有办法覆盖与此类似的伴侣对象val或def?
import scala.collection.JavaConversions._
val m = new java.util.LinkedHashMap[String,Int]
val s: scala.collection.mutable.Map[String,Int] = m.asInstanceOf[scala.collection.mutable.Map[String,Int]]
Run Code Online (Sandbox Code Playgroud)
返回以下错误
java.lang.ClassCastException:java.util.LinkedHashMap无法强制转换为scala.collection.mutable.Map
这里有什么问题以及如何进行这种投射?我也试过scala.collection.JavaConverters._得到同样的错误.
在scala中,我们可以通过以下方式在元组上获得迭代器
val t = (1, 2)
val it = t.productIterator
Run Code Online (Sandbox Code Playgroud)
乃至
it.foreach( x => println(x.isInstanceOf[Int]) )
Run Code Online (Sandbox Code Playgroud)
返回true,因为不使用asInstanceOf [Int],我们无法对迭代器值执行简单的操作,因为
it.foreach( x => println(x+1) )
Run Code Online (Sandbox Code Playgroud)
返回错误:类型不匹配;找到:Int(1)必需:字符串
我了解Integer与Int的问题,但是isInstanceOf [Int]的有效性仍然有些令人困惑。
在元组上执行这些操作的最佳方法是什么?请注意,元组可以混合使用诸如整数和双精度之类的类型,因此转换为列表可能并不总是可行。