gpt4 book ai didi

rust - 为什么没有 else 的 if 总是导致 () 作为值?

转载 作者:行者123 更新时间:2023-11-29 07:52:08 25 4
gpt4 key购买 nike

从这里tutorial :

An if without an else always results in () as the value.

为什么 Rust 施加这个限制并且不允许没有 elseif 返回其他值,如下所示:

let y = if x == 5 { 10 };

最佳答案

对于您的示例,正​​确的问题是:“y 的值是多少?如果x不是 5 吗?”。这里会发生什么?

let x = 3;
let y = if x == 5 { 10 };
println!("{}", y); // what?!

您可能认为 if-without-else-expression 可以返回 Option<_> ,但是……

  1. 这将意味着核心语言依赖于另一个库项目(那些被称为语言项目),每个人都试图避免
  2. 你不会经常遇到这种情况
  3. 只需添加一点代码 ( Some() & else { None } ) 即可获得相同的行为

在 Rust 中,几乎一切都是表达式(除了 let 绑定(bind)和以分号结尾的表达式,即所谓的表达式语句)。还有一些表达式总是返回 () 的例子,因为没有其他意义。这些包括(复合)赋值(why?)、循环和 if-without-else。

关于rust - 为什么没有 else 的 if 总是导致 () 作为值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43335193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com