web-dev-qa-db-fra.com

Comment puis-je obtenir une valeur absolue dans Rust?

Les documents sont inutiles: http://web.mit.edu/Rust-lang_v0.9/doc/std/num/fn.abs.html

Évidemment, je peux voir la fonction à cet endroit, mais je n’ai pas la moindre idée de la façon de l’appeler.

Modifier:

Le problème est que cela ne fonctionne pas fonctionne :)

use std::num;
let x = num::abs(value);

"Nom non résolu: num :: abs"

Edit 2: courir la nuit d'hier (26/11/2014); ne sais pas quelle version. Je n'avais pas réalisé que ces documents étaient si désuets. oO

Les documents actuels semblent indiquer qu’une telle fonction n’existe pas?

29
user1949917

De nos jours, abs est une méthode sur la plupart des types de nombres .

let value = -42i32;
let x = value.abs();
47
Chris Morgan

C'est parce que vous ne fournissez probablement pas assez d'informations de type.

fn main() {
    println!("Abs is \"{}\"",
              std::num::abs(-42i));
}

remarquez le suffixe i qui indique à Rust que -42 est un entier.

La règle du pouce est la suivante: vous devez spécifier votre type quelque part, et le suffixe est utile, par exemple, une autre façon dont cela fonctionne est

fn main() {
    let x = -42i;
    println!("Abs is \"{}\"",
              std::num::abs(x));
}

ça marche aussi

fn main() { 
    let x: int = -42;
    println!("Abs is \"{}\"",
              std::num::abs(x));
}

si vous voulez un mutable, il vous suffit d’ajouter mut juste après let

fn main() { 
    let mut x: int = -42; 
    x += x;
    println!("Abs is \"{}\"",
              std::num::abs(x));
}

et vous obtenez x et vous pouvez changer la valeur de x.

1
user2485710

Jamais réussi à faire rustc reconnaître abs en tant que fonction. Je suis finalement allé avec:

let abs = if val < 0 {
    abs * -1 
} else {
    abs
};

Je suppose que j'aurais pu commencer par là, mais j'essaie toujours d'apprendre les bibliothèques. : |

0
user1949917