我想构建一个对象,每个对象都是通过从最后一个完成的位置开始读取一个字节数组来构建List
的。鉴于构建时唯一需要的状态是到目前为止的内容和读取的字节数,我正在考虑通过重复应用一个将较小的函数转换为较大的函数来做到这一点。在每个步骤中,当前都作为参数传递(可能是到目前为止读取的字节数以避免为此重新解析)并返回附加元素。由于这似乎是一种非常简单的构建方法,因此我很感兴趣,但未能成功找到可用于此的库函数。以下是我正在尝试做的必要示例,我想在Foo
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)}