在 Rust 中的 if 块内创建一个向量。 if作用域结束后如何使用?
A vector is created inside an if block in Rust. How to use it after the scope of if ends?
我正在学习 Rust。我正在尝试计算一个不超过某个数字的素数列表。为此,我需要在 if
块内创建一个向量 (vec1
) 并在 if
范围之外使用它。
我在 MATLAB 中尝试了具有相同逻辑的代码并且它有效。
实际代码的简化版本如下所示:
fn main() {
let mut initiate = 1;
let mut whilechecker = 2;
while whilechecker > 0 {
whilechecker = whilechecker - 1;
if initiate == 1 {
let mut vec1 = vec![2];
}
for i in &vec1 {
if *i == 2 {
break;
}
} //for
initiate = 2;
vec1.push(5);
} //while
} //main
应该在vec1
中放入一个素数列表。但由于它是简化的代码,它应该编译并提供一个向量 (vec1) 就足够了。
但是编译器说:
cannot find value vec1
in this scope
在 for i in &vec1{
和 vec1.push(5);
。
你能编译吗?
没有理由进行复杂的 if initialize==1
检查。只需将向量的初始化移到 while 循环之外,这样它只完成一次:
fn main() {
let mut whilechecker = 2;
let mut vec1 = vec![2];
while whilechecker > 0 {
whilechecker = whilechecker - 1;
for i in &vec1 {
if *i == 2 {
break;
}
} //for
vec1.push(5);
} //while
} //main
我没有得到你真正想要的东西。但这里有一个示例,可以帮助您定义全局范围变量。
fn main() {
let mut initiate = 1;
let mut whilechecker = 2;
let mut vec1 = Vec::new();
while whilechecker > 0 {
if initiate == 1 {
let mut vec1 = vec![2];
}
for i in &vec1 {
if *i == 2 {
break;
}
}
initiate = 2;
vec1.push(5);
whilechecker = whilechecker - 1;
}
println!("{:?}", vec1);
}
给定代码的输出是:
[5, 5]
我正在学习 Rust。我正在尝试计算一个不超过某个数字的素数列表。为此,我需要在 if
块内创建一个向量 (vec1
) 并在 if
范围之外使用它。
我在 MATLAB 中尝试了具有相同逻辑的代码并且它有效。
实际代码的简化版本如下所示:
fn main() {
let mut initiate = 1;
let mut whilechecker = 2;
while whilechecker > 0 {
whilechecker = whilechecker - 1;
if initiate == 1 {
let mut vec1 = vec![2];
}
for i in &vec1 {
if *i == 2 {
break;
}
} //for
initiate = 2;
vec1.push(5);
} //while
} //main
应该在vec1
中放入一个素数列表。但由于它是简化的代码,它应该编译并提供一个向量 (vec1) 就足够了。
但是编译器说:
cannot find value
vec1
in this scope
在 for i in &vec1{
和 vec1.push(5);
。
你能编译吗?
没有理由进行复杂的 if initialize==1
检查。只需将向量的初始化移到 while 循环之外,这样它只完成一次:
fn main() {
let mut whilechecker = 2;
let mut vec1 = vec![2];
while whilechecker > 0 {
whilechecker = whilechecker - 1;
for i in &vec1 {
if *i == 2 {
break;
}
} //for
vec1.push(5);
} //while
} //main
我没有得到你真正想要的东西。但这里有一个示例,可以帮助您定义全局范围变量。
fn main() {
let mut initiate = 1;
let mut whilechecker = 2;
let mut vec1 = Vec::new();
while whilechecker > 0 {
if initiate == 1 {
let mut vec1 = vec![2];
}
for i in &vec1 {
if *i == 2 {
break;
}
}
initiate = 2;
vec1.push(5);
whilechecker = whilechecker - 1;
}
println!("{:?}", vec1);
}
给定代码的输出是:
[5, 5]