如果不使用Rust中的变量,则无法打印i64类型的绝对值
我想实现名为abs的方法。当我使用变量杠杆let时,一切正常:如果不使用Rust中的变量,则无法打印i64类型的绝对值,rust,Rust,我想实现名为abs的方法。当我使用变量杠杆let时,一切正常: fn main() { let x = -5i64; println!("x == {}", x.abs()); } 它产生正确的输出: x == 5 但当我想在没有任何let语句的情况下实现此功能时: fn main() { println!("x's abs == {}", -5i64.abs()); } 我得到以下输出:: x's abs == -5 预
fn main() {
let x = -5i64;
println!("x == {}", x.abs());
}
它产生正确的输出:
x == 5
但当我想在没有任何let语句的情况下实现此功能时:
fn main() {
println!("x's abs == {}", -5i64.abs());
}
我得到以下输出::
x's abs == -5
预期产出:
x's abs == 5
这背后的逻辑是什么?如何在不使用变量的情况下实现文本的绝对值
使现代化
我将完整的文本放在大括号内,然后指定abs调用的类型:
它起作用了
但我仍然不明白为什么直截了当地提到:-5i64不起作用。这是因为方法调用的值高于-。
-5i64.abs解析为取绝对值5,然后求反。这是因为方法调用的值大于-。
-5i64.abs解析为取绝对值5,然后取其反。尝试在-5i64周围使用括号,如`-5i64.absTry,在-5i64周围使用括号,如`-5i64.abs
fn main() {
println!("x's abs == {}", (-5i64).abs());
}