我正在与一个Java库进行接口,该库接受一个double[]作为参数,并将元素添加到数组中。我尝试用JavaConversions创建一个Scala可变数组,但它无法管理这种转换。有什么想法吗?
爪哇:
public static double libraryFn(double[] numbers) {
.....
numbers[0] = 1.0
}
Scala:
def caller() {
// Does not work
val myNumbers = new Array[java.lang.Double](1)
libraryFn(
也许我(再次)找错了树,但如果将属性类型化为scala.collection.immutable.Set[A]是正常的做法,那么如何在给定scala.Iterable[A]的情况下创建这样的属性呢?例如:
class ScalaClass {
private var s: scala.collection.immutable.Set[String]
def init(): Unit = {
val i = new scala.collection.mutable.HashSet[String]
//ADD SOME STUFF TO i
我正在使用Array Buffers创建可变长度的数组。
import scala.collection.mutable.ArrayBuffer
val b = ArrayBuffer[Int]() // empty array!
b += (1, 2, 3, 5) // append and output: ArrayBuffer(1, 2, 3, 5)
现在我想把变量b赋给a
var a = Array[Int]() // a(0) = 10 // error because a is empty array
a = b.toArray // Array(1, 1, 2)
相反,如果我想
有人能给我解释一下为什么ArrayBuffer的padTo方法不能像我期望的那样工作吗?在本例中,我期望toArray创建的数组的长度为10。
scala> val b = new scala.collection.mutable.ArrayBuffer[Byte]
b: scala.collection.mutable.ArrayBuffer[Byte] = ArrayBuffer()
scala> b.append(2)
scala> b
res1: scala.collection.mutable.ArrayBuffer[Byte] = ArrayBuffer(2)
在Scala2.8.1中,如何将java.util.SetString转换为具有泛型类型的scala.collection.Set?
import scala.collection.JavaConversions._
var in : java.util.Set[String] = new java.util.HashSet[String]()
in.add("Oscar")
in.add("Hugo")
val out : scala.collection.immutable.Set[String] = Set(in.toArray : _*)
这是错误
我是Scala和Apache的新手,我一直在尝试一些在线示例。
我使用scala.collection.mutable.ArrayBuffer存储表单的元组列表(Int,ArrayString)。我正在创建一个ArrayBuffer,然后逐行解析一个文本文件,并将每一行所需的数据附加到ArrayBuffer中。
代码没有编译错误。但是,当我访问我所附加的块之外的ArrayBuffer时,我无法获得内容,而且ArrayBuffer始终是空的。
我的密码在下面-
val conf = new SparkConf().setAppName("second")
val spark =
我有以下数组:
var as = Array.empty[Tuple2[Int, Int]]
我向其中添加了一个元素,如下所示:
var nElem = Tuple2(current, current)
as += nElem
current是Int类型的var
然而,我得到了这个错误:
Solution.scala:51: error: type mismatch;
found : (Int, Int)
required: String
as += nElem
我不明白为什么会出现这种情况。我还没有在任何地方声明String。
我们能做些什么呢?
我已经运行了一些测试,而且似乎比慢得多。请证明我错了!
对我来说,Hashmap的全部目的是从给定的键快速访问一个值。因此,当速度问题发生时,我发现自己求助于使用Java,这有点令人难过。我没有足够的经验可以肯定地说,但似乎Java和Scala混合得越多,您可能面临的问题就越多。
test("that scala hashmap is slower than java") {
val javaMap = new util.HashMap[Int,Int](){
for (i <- 1 to 20)
put(i,i+1)
我创建了一个类扩展scala.Immutable
class SomeThing(var string: String) extends Immutable {
override def toString: String = string
}
正如我所预期的,scala编译器应该帮助我防止类SomeThing的更改状态。但是当我运行这个测试
"Test change state of immutable interface" should "not allow" in {
val someThing = new SomeThin
我目前使用的是scala 2.9.1。我使用以下命令创建mutable.HashMap:
> val m = mutable.HashMap.empty[Int, Int]
我对scala还是个新手。在java中,我可以在HashMap的构造函数中指定容量和负载因子。我找不到任何方法在scala中做同样的事情。
提前感谢
我一直在尝试对一个不断抛出奇怪异常的复合案例类对象进行二进制序列化。我真的不明白这个抛出以下异常的例子出了什么问题。我曾经在循环引用中遇到过这种异常,但这里不是这样的。能给点提示吗?
java.lang.ClassCastException: cannot assign instance of scala.collection.immutable.List$SerializationProxy to field com.Table.rows of type scala.collection.immutable.List in instance of com.Table
java.lang.Cl
代码片段来自Scala。
这是完全合法的Scala,尽管它不是很有用:
scala> class Test {
private val xs = scala.collection.mutable.ArrayBuffer[Int]()
private val func = Some((x: Int)=>{
})
private var opt: Option[(Int)=>Unit] = None
opt = func
}
defined class Test
但是,如果我试图在func中执行一些操作,代码将不会编译:
scala> class Tes