【发布时间】:2020-12-17 20:36:14
【问题描述】:
假设我有这样的事情:
let SIZE = 100;
let a = [0; SIZE];
let b = -1;
然后我该怎么做:
a[(SIZE/2)+b];
这里数组的usize索引和被减去的负数的i32不匹配。是否有一种方便的方法可以通过带有负偏移量的数组进行索引?
【问题讨论】:
标签: rust
假设我有这样的事情:
let SIZE = 100;
let a = [0; SIZE];
let b = -1;
然后我该怎么做:
a[(SIZE/2)+b];
这里数组的usize索引和被减去的负数的i32不匹配。是否有一种方便的方法可以通过带有负偏移量的数组进行索引?
【问题讨论】:
标签: rust
就像@Aplet123 回答的那样,您可以使用演员表。但如果b 始终为负数,您可以保存绝对值,然后将其减去:
let b = 1;
return a[SIZE/2 - b];
【讨论】:
首先将其转换为isize(与usize 大小相同的有符号整数):
a[((SIZE / 2) as isize + b) as usize]
【讨论】:
usize 以进行索引