How can I port C++ code that uses the ternary operator to Rust?

ⅰ亾dé卋堺 提交于 2019-11-27 07:45:34

问题


How can I port this C++ code to Rust:

auto sgnR = (R >= 0.) ? 1. : -1.;

I have seen some examples with the match keyword, but I don't understand how it works.


回答1:


Rust does not have the ternary operator because it's not needed. Everything evaluates to some value, and if / else statements are no exception:

let r = 42.42;
let sgn_r = if r >= 0. { 1. } else { -1. };

You'll note that I've also changed your variable names to be idiomatic Rust. Identifiers use snake_case.

Do not be confused by the ? operator that Rust does have. This is called the "try operator" and is used to propagate errors.


Specifically for this code, it's likely you should use f64::signum:

let r = 42.42_f64;
let sgn_r = r.signum();


来源:https://stackoverflow.com/questions/45092638/how-can-i-port-c-code-that-uses-the-ternary-operator-to-rust

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!