返回scala中具有动态类型的序列

返回scala中具有动态类型的序列,scala,implicit-conversion,return-type,Scala,Implicit Conversion,Return Type,我试图定义一个函数,它应该返回类型为T的从1到n的范围。这里,T作为用户输入,并且可以使用隐式def方法将int转换为T。也就是说,我想要但不起作用的是: def createSeq[T](n: Int): Seq[T] = 1 to n map _.asInstanceOf[T] 例如,我可以调用createSeq[Int](3),这就像一个符咒。但是,当我调用createSeq[String](3)时,它仍然返回Vector(1,2,3),它包含整数而不是字符串。让我们定义creat

我试图定义一个函数,它应该返回类型为
T
的从
1
n
的范围。这里,
T
作为用户输入,并且可以使用
隐式def
方法将
int
转换为
T
。也就是说,我想要但不起作用的是:

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

例如,我可以调用
createSeq[Int](3)
,这就像一个符咒。但是,当我调用
createSeq[String](3)
时,它仍然返回
Vector(1,2,3)
,它包含整数而不是字符串。

让我们定义
createSeq
,要求将
Int=>T
隐式转换为
Int
,如下所示:

def createSeq[T](n:Int)(隐式toT:Int=>T):Seq[T]=
1.至(n)地图(总吨)
然后你可以做:

scala>createSeq[Int](3)
res:Seq[Int]=向量(1,2,3)
让我们添加一个隐式转换
Int=>String

隐式def-toStr(n:Int):String=n.toString
然后你可以做:

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

注:最后一个
向量(1,2,3)
属于
Seq[String]
类型,它实际上是
向量(“1”、“2”、“3”)
,但
被省略。

如果按原样指定
T
,那么您试图实现的目标就毫无意义。请解释您希望代码在以下调用中返回什么:
case object SpaceStation
createSeq[SpaceStation](42)
Awesome!正是我需要的。