Rust中如何在while或for循环中实现函数返回值?
Rust循环返回值问题解答
你的第一段代码能运行是因为loop循环里用了return直接返回值,但while和for循环本身不会自动返回值,你需要手动指定返回内容,否则编译器会因为函数声明了返回类型却没有返回值而报错。
修复while循环版本
你的第二个countdown函数执行完while循环后没有返回任何值,只需要在循环结束后返回最终的y即可:
#![allow(unused)] fn main() { let y = 3; println!("{} Liftoff!", countdown(y)); } fn countdown(mut y: u8) -> u8 { while y != 0 { y -= 1; } // 循环结束后返回最终的y值 y }
如果需要在循环过程中满足条件就返回,也可以在循环里用return:
fn countdown(mut y: u8) -> u8 { while y != 0 { y -= 1; if y == 1 { return y; } } y }
修复for循环版本
被注释的for循环同样需要明确返回值,比如遍历结束后返回指定值,或者在遍历中满足条件时返回:
#![allow(unused)] fn main() { println!("{} Liftoff!", countdown()); } fn countdown() -> u8 { for y in (1..4).rev() { println!("{}", y); if y == 1 { return 0; // 满足条件时返回指定值 } } // 遍历结束后默认返回值 0 }
关键说明
- Rust中只有
loop可以通过break 表达式的方式返回值(比如break y),while和for没有这个特性。 - 函数的返回值要么通过
return语句主动返回,要么用函数最后一行的表达式自动返回(不需要写return)。
内容的提问来源于stack exchange,提问作者Shah
相关产品推荐
相关产品推荐

