在scala中转换用于理解的结果类型 case类数组_8to24[T](val-arr:Array[T]){ def tail():数组[T]={ 对于(i
So),问题在于它不知道如何创建未知类型的数组在scala中转换用于理解的结果类型 case类数组_8to24[T](val-arr:Array[T]){ def tail():数组[T]={ 对于(i,scala,types,for-comprehension,Scala,Types,For Comprehension,So),问题在于它不知道如何创建未知类型的数组T。数组是一种特殊类型的容器,因为它们由本机java数组支持,因此在实例化数组时需要具有元素类型。向声明中添加清单可以解决此问题: def swaps(arr:Array[Int]):Array[Int] = { for(i <- 0 until arr.length toArray) yield { if((i+1)%2 != 0 && i+1<arr.length){ a
T
。数组是一种特殊类型的容器,因为它们由本机java数组支持,因此在实例化数组时需要具有元素类型。向声明中添加清单可以解决此问题:
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)
}
}
}
case类数组_8to24[T:Manifest](val-arr:Array[T]){
def tail():数组[T]=
对于(i)数组(b,a)情形x=>x}.toArray
如何arr.tail
?Manifest是scala反射库的一部分,它携带有关类型的一些信息,例如它所引用的实际运行时类。将其添加到类声明中会创建一个隐式参数,该参数将在运行时可用,并可用于实例化f正确的类型。基本上,当您创建类的具体实例(如Array\u 8to24(Array(1,2,3)
)时,编译器将为Int
生成一个Manifest
实例,并将其传递给类,以便保留类型信息,并可在调用tail
时使用。
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)
}
}
}
case class Array_8to24[T : Manifest](val arr:Array[T]) {
def tail(): Array[T] =
for(i <- 1 until arr.length toArray) yield arr(i)
}