我正在尝试切片一个元组,删除最后两个项目.我尝试使用list drop/take方法,但我无法成功获得元组.
这是我尝试的方法:
scala> val myTuple = (1, 2, 4, 5, 0, 5)
myTuple: (Int, Int, Int, Int, Int, Int) = (1,2,4,5,0,5)
scala> val myList = myTuple.productIterator.toList
myList: List[Any] = List(1, 2, 4, 5, 0, 5)
scala> val mySubList = myList.dropRight(2)
mySubList: List[Any] = List(1, 2, 4, 5)
scala> val mySubTuple = ???
Run Code Online (Sandbox Code Playgroud)
我在这里看到,在scala中,元组的列表不是(但是?).
是否有其他方法可以获得该子组(不处理myTuple._1,myTuple._2 ...)?
我正在尝试创建类似于Scala库中的类型的Tuple,只使用:+方法通过添加N + 1st值将元组扩展为元组 - 这样我将能够递归地构造元组:
class Test {
abstract class Tuple {
//protected type Next[_] <: Tuple
//def :+[T](p: T): Next[T]
}
case class Tuple0() extends Tuple {
protected type Next[T] = Tuple1[T]
def :+[T](p: T): Next[T] = Tuple1(p)
}
case class Tuple1[+T1](p1: T1) extends Tuple {
protected type Next[T] = Tuple2[T1, T]
def :+[T](p: T): Next[T] = Tuple2(p1, p)
}
case class Tuple2[+T1, +T2](p1: T1, p2: T2) extends Tuple {
protected type Next[-T] = Nothing
def :+[T](p: T): Next[T] …
Run Code Online (Sandbox Code Playgroud)