我将重写我之前的、不清楚的问题。我的问题是当我尝试从 for 循环返回一个值时。
这很好用:
RFM = randomForest(Rating~Customer_type + Rating + cogs, data = training)
这不起作用:
fn main() {
counter(5, 8);
}
fn counter(start: u32, end: u32) {
for n in start..=end {
println!("{}", n);
}
}
而且我尝试了很多东西,但我无法让它发挥作用。我希望有人能帮助我理解原因。
答案 0 :(得分:1)
如果你声明一个这样的函数
fn counter(start: u32, end: u32) -> u32
然后告诉编译器它应该返回单个 u32
值,即单个无符号整数。
您的 for 循环遍历一堆数字,但它只能返回其中一个。您可以更改函数的返回类型以返回一个 Vec<u32>
,一个 u32
的向量,它是一种可以存储一大堆 u32
值的数据结构:
fn counter(start: u32, end: u32) -> Vec<u32> {
(start..=end).collect()
}
或者,您也可以告诉编译器结果是 u32
值上的 迭代器:
fn counter(start: u32, end: u32) -> impl Iterator<Item = u32> {
start..=end
}
迭代器懒惰地生成从 start
到 end
的值,您可以在调用代码中对其进行迭代,例如
for i in counter(1, 10) {
println!("{}", i);
}
打印从一到十的数字。