假设我有这样的东西:
let SIZE = 100;
let a = [0; SIZE];
let b = -1;
然后我该怎么做:
a[(SIZE/2)+b];
这里数组的usize索引和减去的负数的i32之间不匹配。有没有一种方便的方法可以通过同样具有负偏移的数组进行索引?
就像@Aplet123回答的那样,您可以使用强制转换。但是,如果b
总是负值,则可以保存绝对值,并将其替换为:
let b = 1;
return a[SIZE/2 - b];
首先将其强制转换为isize
(与usize
大小相同的有符号整数(:
a[((SIZE / 2) as isize + b) as usize]