最後に終了した場所から始まるバイト配列を読み取ることによってそれぞれが構築されたオブジェクトList
のを構築したいと思います。ビルド時に必要な状態はこれまでの内容と読み込んだバイト数だけなので、小さいものを大きいものに変換する関数を繰り返し適用することでこれを行うことを考えていました。各ステップで、 currentがパラメーターとして渡され (および、これに対する再解析を避けるために、これまでに読み取られたバイト数も含まれる場合があります)、要素が追加されて返されます。これは を構築するための非常に簡単な方法のように思えるので、興味はありましたが、これに使用できるライブラリ関数を見つけることができませんでした。以下は、私がやろうとしていることの必須の例です。機能を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)}