如何从 for 循环返回多个值?

时间:2021-04-16 09:31:03

标签: rust

我将重写我之前的、不清楚的问题。我的问题是当我尝试从 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);
    }
}

而且我尝试了很多东西,但我无法让它发挥作用。我希望有人能帮助我理解原因。

1 个答案:

答案 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
}

迭代器懒惰地生成从 startend 的值,您可以在调用代码中对其进行迭代,例如

for i in counter(1, 10) {
    println!("{}", i);
}

打印从一到十的数字。

相关问题