我最近在一些code written by GUILLAUME ENDIGNOUX中遇到了这个表达式,它产生一个10个数的向量:
(10 * i..10 * (i + 1)).collect()
给予:420、421、422、423、424、425、426、427、428、429
下面是一个工作示例,为了简化,我将数字"10"替换为"3":
fn main() {
let v = get_data(42);
assert_eq!(v, [126, 127, 128]);
}
fn get_data(i: usize) -> Vec<usize>{
(3 * i..3 * (i + 1)).collect() // How does this work?
}
这是怎么回事?
将第一个数字更改为1,例如:
( 1 * i..3 * (i + 1)).collect()
我期望向量包含1个元素,但是我得到了从42到128(包括42和128)的所有数字,即总共86个数字。
1条答案
按热度按时间p1tboqfb1#
..
运算符具有相当低的优先级,这意味着您的乘法在它之前应用。所以
相当于
i
的值为42
,它给出了42..129
的范围,与您观察到的相符。