If statement 如何连接C++;使用三元运算符生锈的代码? 我如何将C++代码移植到锈蚀:< /p> auto sgnR = (R >= 0.) ? 1. : -1.;

If statement 如何连接C++;使用三元运算符生锈的代码? 我如何将C++代码移植到锈蚀:< /p> auto sgnR = (R >= 0.) ? 1. : -1.;,if-statement,rust,conditional-operator,If Statement,Rust,Conditional Operator,我见过一些使用match关键字的示例,但我不明白它是如何工作的。Rust没有三元运算符,因为它不需要。所有内容都会计算为某个值,如果/其他语句也不例外: let r = 42.42; let sgn_r = if r >= 0. { 1. } else { -1. }; 您会注意到,我还将变量名更改为惯用名称。标识符使用snake\u case 不要被锈迹确实存在的?操作员所迷惑。这是 特别是对于此代码,您可能应该使用: 从Rust 1.50开始,您可以使用来完成相同的任务: 让sgn

我见过一些使用
match
关键字的示例,但我不明白它是如何工作的。

Rust没有三元运算符,因为它不需要。所有内容都会计算为某个值,
如果
/
其他
语句也不例外:

let r = 42.42;
let sgn_r = if r >= 0. { 1. } else { -1. };
您会注意到,我还将变量名更改为惯用名称。标识符使用
snake\u case

不要被锈迹确实存在的
操作员所迷惑。这是


特别是对于此代码,您可能应该使用:


从Rust 1.50开始,您可以使用来完成相同的任务:

让sgn|u r=(r>=0)。然后(||1)。展开_或(-1);

请注意,出于可读性原因,通常最好使用常规的
if/else
语句,但
bool::then
在某些情况下可能更好。

Google“三元运算符”你会发现一系列的点击。“鲍姆,这个问题需要了解Rust和C++,所以这是一个非常少的问题,应该有两个标签。不过,我确实认为它应该因为其他原因关闭。@Galik Nah,标签是用来查找相关内容的。没有C++问题的人会想找到这个问题,所以它不应该有标签。这不是C++问题,而是一个生锈问题。(另外,我不明白“它应该因为其他原因关闭”这一部分,这似乎与整个标记问题非常正交。)@BaummitAugen但你怎么能指望一个纯粹的Rust程序员从他不懂的语言转换代码呢?对C++有一定的了解。如果人们不想找到这个问题,那么它应该被关闭而不是被误判。我只是想告诉你,我认为这是一个非常好的答案,涵盖了许多相关的事情。祝你今天愉快:)
let r = 42.42_f64;
let sgn_r = r.signum();