gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:06:10 24 4
gpt4 key购买 nike

我正在尝试定义一个函数,它应该返回从 1n 的范围,类型为 T。这里,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,要求从 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")" 被省略了。

关于scala - 在 Scala 中返回具有动态类型的序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43065033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com