2017-07-14 2 views
0

Comment puis-je le port ce code C++ à Rust:Comment puis-je transférer le code C++ utilisant l'opérateur ternary vers Rust?

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

J'ai vu quelques exemples avec le mot-clé match, mais je ne comprends pas comment cela fonctionne.

+1

https://github.com/rust-lang/rfcs/issues/1362 – Barmar

+3

Google « rouille opérateur ternaire "et vous trouverez un tas de hits. – Barmar

+0

@Baum Cette question nécessite de comprendre à la fois Rust et C++, c'est donc l'une des rares questions qui devraient avoir les deux balises. Cependant, je pense qu'il devrait être fermé pour * autres * raisons. – Galik

Répondre

9

Rust n'a pas l'opérateur ternaire car il n'est pas nécessaire. Tout évalue à une certaine valeur, et les déclarations if/else ne font pas exception:

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

Vous remarquerez que j'ai aussi changé vos noms de variables pour être idiomatiques Rust. Les identifiants utilisent snake_case.

Ne soyez pas déroutés par l'opérateur ? que Rust a. C'est called the "try operator" and is used to propagate errors.


Plus précisément pour ce code, il est probable que vous devriez utiliser f64::signum:

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