如何在Swift中实现java Arraycopy?

Hun*_*CLo 0 java arraycopy swift

Java的定义在arraycopy这里: Java arraycopy

我的Java代码如下:

public byte[] getRawData() {
    byte[] raw = new byte[value.length + 4];
    //little endian defined by fido spec
    raw[0] = (byte) (tag);
    raw[1] = (byte) (tag>>8);
    raw[2] = (byte) (len);
    raw[3] = (byte) (len>>8);
    System.arraycopy(value, 0, raw, 4, value.length);
    return raw;
}
Run Code Online (Sandbox Code Playgroud)

这是我的Swift代码:

public func getRawData() -> [UInt8] {
    var raw = [UInt8(value.count + 4)]
    raw[0] = UInt8(tag)
    raw[1] = UInt8(tag>>8)
    raw[2] = UInt8(len)
    raw[3] = UInt8(len>>8)
    // The place the put swift arraycopy
    return raw

}
Run Code Online (Sandbox Code Playgroud)

arraycopy在Swift中没有类似的功能.如何正确重新实现此功能?

pau*_*lvs 7

您可以使用Swift slice来获得与Java相同的结果arraycopy:

var src = [0, 1, 2, 3]
var dst = [4, 5, 6, 7, 8, 9]

dst[1...4] = src[0...3]

print(dst) // [4, 0, 1, 2, 3, 9]
Run Code Online (Sandbox Code Playgroud)

注意:这不处理边界检查.