Icon LinkRawSlice

可以使用 RawSlice 类型表示值的动态数组。原始切片可以是值引用或原始指针。

// #import { RawSlice };
 
const rawSlice: RawSlice = [40, 41, 42];
 
const { value } = await contract.functions.raw_slice_comparison(rawSlice).simulate();
 
expect(value).toBeTruthy();

Icon Link使用 RawSlice

RawSlice 类型可以与您的合约调用集成。考虑以下可以比较并返回 RawSlice 的合约:

contract;
 
abi RawSliceTest {
    fn echo_raw_slice(value: raw_slice) -> raw_slice;
    fn raw_slice_comparison(value: raw_slice) -> bool;
}
 
impl RawSliceTest for Contract {
    fn echo_raw_slice(value: raw_slice) -> raw_slice {
        value
    }
 
    fn raw_slice_comparison(value: raw_slice) -> bool {
        let vec: Vec<u8> = Vec::from(value);
 
        vec.len() == 3 && vec.get(0).unwrap() == 40 && vec.get(1).unwrap() == 41 && vec.get(2).unwrap() == 42
    }
}

可以使用原生 JavaScript 数组或大数数组来创建 RawSlice,并发送到 Sway 合约:

// #import { RawSlice };
 
const rawSlice: RawSlice = [8, 42, 77];
 
const { value } = await contract.functions.echo_raw_slice(rawSlice).simulate();
 
expect(value).toStrictEqual(rawSlice);