return 和无限循环中的中断有什么区别?
What is the difference between a return and a break in an infinite loop?
在做 Rust Book 的猜谜游戏时(我不会放 link 因为它可能在几周内不存在),有一点你使用 return
突破loop
。我用 break
代替:
loop {
guess = guesser();
guess_cast = guess.trim().parse();
let guess_num = match guess_cast {
Ok(num) => num,
Err(_) => {
println!("Guess was not a number, try again");
continue;
},
};
if guess_num < answer {
println!("Too low");
} else if guess_num > answer {
println!("Too high");
} else {
println!("You guessed it!");
break;
}
}
在这种情况下,使用 return
与 break
真的有区别吗?想跳出死循环的其他情况怎么办?
如果循环是函数中的最后一条语句,那么break;
和return;
之间显然没有功能上的区别。如果这个条件不成立,显然是有区别的,因为return
终止执行函数,而break
只终止的执行]loop.
在功能相同的情况下,您使用的可能会因上下文(在这个特定位置感觉哪个更好)、个人喜好以及您早餐吃什么(如果有的话)而有所不同。
在做 Rust Book 的猜谜游戏时(我不会放 link 因为它可能在几周内不存在),有一点你使用 return
突破loop
。我用 break
代替:
loop {
guess = guesser();
guess_cast = guess.trim().parse();
let guess_num = match guess_cast {
Ok(num) => num,
Err(_) => {
println!("Guess was not a number, try again");
continue;
},
};
if guess_num < answer {
println!("Too low");
} else if guess_num > answer {
println!("Too high");
} else {
println!("You guessed it!");
break;
}
}
在这种情况下,使用 return
与 break
真的有区别吗?想跳出死循环的其他情况怎么办?
如果循环是函数中的最后一条语句,那么break;
和return;
之间显然没有功能上的区别。如果这个条件不成立,显然是有区别的,因为return
终止执行函数,而break
只终止的执行]loop.
在功能相同的情况下,您使用的可能会因上下文(在这个特定位置感觉哪个更好)、个人喜好以及您早餐吃什么(如果有的话)而有所不同。