Return scala 中具有动态类型的序列

Return a sequence with dynamic type in scala

我正在尝试定义一个函数,它应该 return 范围从 1n,类型为 T。这里,T 作为用户输入给出,implicit def 方法可用于将 int 转换为 T。即,我想要但不起作用的是:

def createSeq[T](n: Int): Seq[T] = 
  1 to n map _.asInstanceOf[T]

例如,我可以调用 createSeq[Int](3),这非常有效。但是,当我调用 createSeq[String](3) 时,它仍然是 returns Vector(1,2,3),它包含整数而不是字符串。

让我们定义 createSeq,要求从 IntT 的隐式转换 Int => T,如:

def createSeq[T](n: Int)(implicit toT: Int => T): Seq[T] =
  1.to(n).map(toT)

那么你可以这样做:

scala> createSeq[Int](3)
res: Seq[Int] = Vector(1, 2, 3) 

让我们添加一个隐式转换Int => String:

implicit def toStr(n: Int): String = n.toString

那么你可以这样做:

scala> createSeq[String](3)
res: Seq[String] = Vector(1, 2, 3) 

注:最后的Vector(1, 2, 3)Seq[String]类型,实际上是Vector("1", "2", "3"),只是省略了"