我想在Squeak,Cuis或Pharo Smalltalk加入两个ByteArray实例
b := #[10 11 12 13] asOrderedCollection.
b addAll: #[21 22 23 24].
b asByteArray
有更有效的方法吗?
答案 0 :(得分:9)
连接会更好......?
#[10 11 12 13],#[21 22 23 24 ]
答案 1 :(得分:4)
是。使用OrderedCollection将涉及几个不必要的对象分配和冗余复制。您应该创建一个新的字节数组并将源数组的内容复制到其中:
a := #[10 11 12 13].
b := #[21 22 23 24].
c := ByteArray new: (a size + b size).
c replaceFrom: 1 to: a size with: a startingAt: 1.
c replaceFrom: a size + 1 to: c size with: b startingAt: 1.
这只分配新的ByteArray并使用原语进行复制,因此它非常快。它可以在Squeak,Cuis和Pharo中使用,也很可能在其他Smalltalks中使用。