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();
https://github.com/rust-lang/rfcs/issues/1362 – Barmar
Google « rouille opérateur ternaire "et vous trouverez un tas de hits. – Barmar
@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