如何使用 LazyList.iterate 创建 LazyList Scala?
How to create LazyList Scala using LazyList.iterate?
我的任务:
- 实现一个函数来计算 Look-and-say 序列。
已完成,测试成功通过:
import scala.collection.immutable.LazyList
import scala.language.implicitConversions
import scala.collection.mutable.ListBuffer
object CountAndSay extends App {
def nextLine(currentLine: List[BigInt]): List[BigInt] = {
...
println(nextLine(List(1, 2, 1, 1)) == List(1, 1, 1, 2, 2, 1))
println(nextLine(List(1, 1, 1, 2, 2, 1)) == List(3, 1, 2, 2, 1, 1))
println(nextLine(List(3, 1, 2, 2, 1, 1)) == List(1, 3, 1, 1, 2, 2, 2, 1))
}
- 实现生成给定序列的惰性列表。
val funSeq: LazyList[List[Int]] = ...
println(funSeq(5) === List(3, 1, 2, 2, 1, 1))
要使用嵌套列表创建 LazyList,我想使用 LazyList.iterate。
LazyList.iterate description
但是我收到无法解析重载方法 'iterate' 错误:
val funSeq: LazyList[List[BigInt]] = LazyList.iterate(List(1), nextLine(List(1)))
如有任何帮助,我将不胜感激。
您似乎没有正确使用 LazyList 语法。您需要按如下方式使用它:
LazyList.iterate(List(BigInt(1)))(nextLine).take(4).force
iterate的第一个参数是将传入函数的起始元素-iterate的第二个参数。 take 需要进行多次迭代,force 需要计算结果。
我的任务:
- 实现一个函数来计算 Look-and-say 序列。
已完成,测试成功通过:
import scala.collection.immutable.LazyList
import scala.language.implicitConversions
import scala.collection.mutable.ListBuffer
object CountAndSay extends App {
def nextLine(currentLine: List[BigInt]): List[BigInt] = {
...
println(nextLine(List(1, 2, 1, 1)) == List(1, 1, 1, 2, 2, 1))
println(nextLine(List(1, 1, 1, 2, 2, 1)) == List(3, 1, 2, 2, 1, 1))
println(nextLine(List(3, 1, 2, 2, 1, 1)) == List(1, 3, 1, 1, 2, 2, 2, 1))
}
- 实现生成给定序列的惰性列表。
val funSeq: LazyList[List[Int]] = ...
println(funSeq(5) === List(3, 1, 2, 2, 1, 1))
要使用嵌套列表创建 LazyList,我想使用 LazyList.iterate。 LazyList.iterate description 但是我收到无法解析重载方法 'iterate' 错误:
val funSeq: LazyList[List[BigInt]] = LazyList.iterate(List(1), nextLine(List(1)))
如有任何帮助,我将不胜感激。
您似乎没有正确使用 LazyList 语法。您需要按如下方式使用它:
LazyList.iterate(List(BigInt(1)))(nextLine).take(4).force
iterate的第一个参数是将传入函数的起始元素-iterate的第二个参数。 take 需要进行多次迭代,force 需要计算结果。