Scala - 从 List Companion 对象创建方法
Scala - make method from List Companion Object
我看到 List.make
在这里被调用
http://aperiodic.net/phil/scala/s-99/p12.scala
但是我已经使用 padTo
解决了这个问题,因为 make 已经不存在了
def decode[A](listOfTuples: List[(Int, A)]): List[Any] = {
listOfTuples flatMap {
x => Nil.padTo(x._1,x._2)
}
}
那么,我是不是听错了?
这样可以吗?
def decode[A](listOfTuples: List[(Int, A)]): List[A] = {
listOfTuples flatMap { case (n, e) =>
List.fill(n)(e)
}
}
解决方案可能是使用列表中的 fill
方法。解决方法如下图:
scala> val l1 = List((4, 'a'), (1, 'b'), (2,'c'))
l1: List[(Int, Char)] = List((4,a), (1,b), (2,c))
scala> def decode[A](l: List[(Int, A)]): List[A] = {
| l flatMap { e => List.fill(e._1)(e._2)}
| }
decode: [A](l: List[(Int, A)])List[A]
scala> decode[Char](l1)
res60: List[Char] = List(a, a, a, a, b, c, c)
希望对您有所帮助!!
List.make
自 Scala 2.8.0 起被弃用,取而代之的是 List.fill
。您使用 padTo
的方法是正确的,只是不够直观。
def decode[A](listOfTuples: List[(Int, A)]): List[A] = {
listOfTuples flatMap {
x => List.fill(x._1)(x._2)
}
}
请注意,我将 Any
替换为类型参数 A
。
我看到 List.make
在这里被调用
http://aperiodic.net/phil/scala/s-99/p12.scala
但是我已经使用 padTo
解决了这个问题,因为 make 已经不存在了
def decode[A](listOfTuples: List[(Int, A)]): List[Any] = {
listOfTuples flatMap {
x => Nil.padTo(x._1,x._2)
}
}
那么,我是不是听错了?
这样可以吗?
def decode[A](listOfTuples: List[(Int, A)]): List[A] = {
listOfTuples flatMap { case (n, e) =>
List.fill(n)(e)
}
}
解决方案可能是使用列表中的 fill
方法。解决方法如下图:
scala> val l1 = List((4, 'a'), (1, 'b'), (2,'c'))
l1: List[(Int, Char)] = List((4,a), (1,b), (2,c))
scala> def decode[A](l: List[(Int, A)]): List[A] = {
| l flatMap { e => List.fill(e._1)(e._2)}
| }
decode: [A](l: List[(Int, A)])List[A]
scala> decode[Char](l1)
res60: List[Char] = List(a, a, a, a, b, c, c)
希望对您有所帮助!!
List.make
自 Scala 2.8.0 起被弃用,取而代之的是 List.fill
。您使用 padTo
的方法是正确的,只是不够直观。
def decode[A](listOfTuples: List[(Int, A)]): List[A] = {
listOfTuples flatMap {
x => List.fill(x._1)(x._2)
}
}
请注意,我将 Any
替换为类型参数 A
。