【发布时间】:2012-10-30 11:30:12
【问题描述】:
我想构建一个Foo 对象的List,每个对象都是通过从最后一个Foo 完成的位置开始读取一个字节数组来构造的。鉴于构建时唯一需要的状态是到目前为止的内容和读取的字节数,我正在考虑通过重复应用将较小的 List 转换为较大的函数来实现这一点。在每个步骤中,当前List 作为参数传递(可能是到目前为止读取的字节数以避免为此重新解析)并返回附加元素。由于这似乎是构建List 的一种非常简单的方法,因此我很感兴趣,但没有成功找到可以用于此目的的库函数。以下是我正在尝试做的事情的必要示例,我想让bytesToList 中的功能无状态且更简洁:
def bytesToList(bytes: Array[Byte]): List[Foo] =
{
var numBytesRead = 0
var listToBuild = List[Foo]()
while (numBytesRead < bytes.length)
{
listToBuild ::= new Foo(bytes, numBytesRead)
numBytesRead += listToBuild.last.bytesRead
}
listToBuild
}
class Foo(bytesToRead: Array[Byte], startReadingAt: Int)
{val bytesRead = Random.nextInt(bytesToRead.length)}
【问题讨论】:
标签: list parsing function scala recursion