Return scala 中具有动态类型的序列
Return a sequence with dynamic type in scala
我正在尝试定义一个函数,它应该 return 范围从 1
到 n
,类型为 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
,要求从 Int
到 T
的隐式转换 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")
,只是省略了"
。
我正在尝试定义一个函数,它应该 return 范围从 1
到 n
,类型为 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
,要求从 Int
到 T
的隐式转换 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")
,只是省略了"
。