我有一个函数可以生成特定类型的数组:
def mkArray[A:ClassTag:Ordering](size:Int):Array[A] = Array.ofDim[A](size)
我想创建类型为Int或String的数组arr,具体取决于String str,如下所示:
var arr = if(str=="i"){mkArray[Int](size)}else{mkArray[String](size)}
现在我尝试像这样向数组添加值:
arr(n) = num.toInt // num is String like "123"
但它说:
- type mismatch; found : Int required: _366 where type _366 >: Int
with String
如何解决这个问题,根据字符串str生成类型为Array [Int]或Array [String]的arr?
感谢任何帮助, 谢谢!
答案 0 :(得分:0)
Scala是一种静态类型语言,在您的情况下,arr
的类型为Array[_ >: Int with String]
。因此,如果给它一个Int,就会出现类型错误。
根据您在代码中进一步使用数组的方式,我建议您查看Either [1],因为它可能有助于保持数组[Either]和处理当它包含Int vs String时,它使用不同的模式匹配。
[1] http://danielwestheide.com/blog/2013/01/02/the-neophytes-guide-to-scala-part-7-the-either-type.html