case class Array_8to24[T](val arr:Array[T]) {
def tail():Array[T] = {
for(i <- 1 until arr.length toArray) yield arr(i)
}
}
编译器说tail()返回ArraySeq [T],我期望Array [T]
BTW swaps()按预期工作
def swaps(arr:Array[Int]):Array[Int] = {
for(i <- 0 until arr.length toArray) yield {
if((i+1)%2 != 0 && i+1<arr.length){
arr(i + 1)
}else {
arr(if(i==arr.length-1 && arr.length%2!=0) i else i - 1)
}
}
}
如何从tail()返回Array [T]?
答案 0 :(得分:2)
所以,问题在于它不知道如何创建未知类型T
的数组。数组是一种特殊的容器,因为它们由本机java数组支持,因此在实例化数组时需要具有元素类型。在声明中添加清单应该修复它:
case class Array_8to24[T : Manifest](val arr:Array[T]) {
def tail(): Array[T] =
for(i <- 1 until arr.length toArray) yield arr(i)
}
你知道你可以做arr.tail
或arr.drop(1)
,对吗?
swaps
可以是arr.grouped(2).flatMap { case Array(a,b) => Array(b,a) case x => x }.toArray