我正在学习Scala,作为一项作业,我必须使用折叠来生成Int的列表:
// Generate list of integers by applying f to b until it returns None
def unfold(b: Int, f: Int => Option[(Int, Int)]): IntList = {
f(b) match {
case None => Nil()
case Some((x, y)) => Cons(x,unfold(y, f))
}
}
这个展开工作得很好,但是现在我必须写一个fromUntil,说实话,我完全迷失了怎么办?所以我只是随机开始,但这根本不起作用。一些帮助将不胜感激!
// generate the list of integers from i until j
def fromUntil(i: Int, j: Int): IntList = {
unfold(i, (x: Int) =>if(x < j) Some((j, j - 1)) else None)
}
}
杰罗姆
答案 0 :(得分:1)
由于这是一项功课,我不会给你一个完整的答案,只有一些线索:
f
fromUntil
函数必须包含的内容
y
来自哪里,何时计算?f
吗?答案 1 :(得分:1)
你走在正确的轨道上:
fromUntil
语法是否正确 - 你有一些额外的大括号y
unfold
内每次通话都应保持增长
醇>
继续前进,试着看看如果你拨打fromUntil(1,1)
会发生什么,如果你拨打fromUntil(1,2)
会发生什么,等等。你快到了。