Ste*_*nko 12 if-statement conditional-operator rust
如何将此C++代码移植到Rust:
auto sgnR = (R >= 0.) ? 1. : -1.;
Run Code Online (Sandbox Code Playgroud)
我看过match关键字的一些例子,但我不明白它是如何工作的.
She*_*ter 41
Rust没有三元运算符,因为它不需要.Everything评估为某个值,if/ elsestatements也不例外:
let r = 42.42;
let sgn_r = if r >= 0. { 1. } else { -1. };
Run Code Online (Sandbox Code Playgroud)
你会注意到我也把你的变量名改为了惯用的Rust.标识符使用snake_case.
不要被?Rust 确实拥有的操作员所困惑.这称为"try运算符",用于传播错误.
特别是对于此代码,您可能应该使用f64::signum:
let r = 42.42_f64;
let sgn_r = r.signum();
Run Code Online (Sandbox Code Playgroud)
Ibr*_*med 11
在这种情况下,您可以使用bool::thenorbool::then_some来完成同样的事情:
let sgn_r = (r >= 0).then_some(1).unwrap_or(-1);
Run Code Online (Sandbox Code Playgroud)
语句if/else可能会更好地提高可读性,但在某些情况下这可能会更好。