gpt4 book ai didi

scala - 在scala中转换for-comprehension的类型结果

转载 作者:行者123 更新时间:2023-12-02 01:24:59 25 4
gpt4 key购买 nike

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]?

最佳答案

所以,问题在于它不知道如何创建一个未知类型的数组T。数组是一种特殊的容器,因为它们由 native java 数组支持,因此在实例化数组时需要具有元素类型。将 list 添加到声明中应该可以修复它:

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.tailarr.drop(1),对吧?swap 可以是 arr.grouped(2).flatMap { case Array(a,b) => Array(b,a) case x => x }.toArray

关于scala - 在scala中转换for-comprehension的类型结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37737456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com