【问题标题】:How do I get an absolute value in Rust?如何在 Rust 中获得绝对值?
【发布时间】:2014-11-28 06:05:21
【问题描述】:

文档没有帮助:http://web.mit.edu/rust-lang_v0.9/doc/std/num/fn.abs.html

显然,我可以在那里看到该函数,但我不知道如何调用它。

编辑:

问题在于它不起作用。 :)

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

“未解析的名称:num::abs”

编辑 2:从昨天(2014 年 11 月 26 日)开始每晚运行;不知道是什么版本。我没有意识到那些文档已经过时了。 oO

目前的文档似乎表明没有这样的功能?

【问题讨论】:

  • 我仍然需要处理 rust 但std::num::abs 看起来是合适的电话。
  • 是的,我也是这么想的。
  • 还有什么问题?显示你的代码。
  • 这些文档适用于非常旧的 Rust 版本,0.9(很遗憾,但我们无法联系到试图让他们在搜索结果中降级的人) . doc.rust-lang.org/std 是查找有关夜间版本标准库的文档的最佳位置(也有内置搜索)。你有什么版本的 Rust? (rustc -v)

标签: rust


【解决方案1】:

现在,abs is a method on most number types

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

【讨论】:

  • 我认为调用成员方法或“全局”abs 函数并不重要,无论哪种方式都应该调用适当的重载。
  • @user2485710:“全局”abs 函数是什么意思?再也没有这样的事情了。 std::num::abs 不存在。
  • 好吧,play.rust-lang.org 提供了最新的 rust 实现,并且可以正常工作。
  • 在 0.12 中似乎有一个 std::num::abs,之后被删除了吗?
  • @user2485710:play.rust-lang.org 今天已经过时了三周。
【解决方案2】:

提到std::num::abs 的答案不再起作用。

改为使用:

i32::abs(n)

【讨论】:

    【解决方案3】:
    fn main() {
        let mut number: i32 = -8;
        number = number.abs();
        println!("{}", number);
    }
    

    请记住,您必须明确指定数据类型。

    【讨论】:

      【解决方案4】:

      从未设法让rustcabs 识别为一个函数。我终于选择了:

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

      我想一开始就可以这样开始,但我仍在努力学习这些库。 :|

      【讨论】:

      • 这听起来更像是您的安装问题,尝试编写一个有效且完整的示例,将其粘贴到在线编译器play.rust-lang.org 并点击“分享”并发布到此处。
      • 对不起,兄弟,但这一个有效的、完整的例子。几天前真的可以使用克里斯摩根的回应。 :)
      【解决方案5】:

      那是因为您可能没有提供足够的类型信息。

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

      注意 i 后缀告诉 Rust -42 是一个整数。

      经验法则是:你必须指定你的类型是什么,不知何故,后缀很方便,例如另一种工作方式是

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

      这个也可以

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

      如果你想要一个可变的,你只需要在let之后添加mut

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

      你得到x,你可以改变x的值。

      【讨论】:

      • 这是一种强类型语言。该变量具有它可能获得的所有类型信息。
      • @archer884 类型推断 它不一定与语言是“强”或“弱”类型有关,游戏规则只是提供一种应该是正确的类型输入你想要的。
      • 这是一个变量。不是常数。常量需要您提到的其他类型信息,但我们正在讨论变量。这在您要求的代码示例中很清楚。你不能装饰一个变量。您在变量名称后添加一个“i”,然后您只需更改名称。没用。
      • @archer884 又加了一个例子,加1个关键字就行了
      猜你喜欢
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      • 2022-01-05
      • 1970-01-01
      相关资源
      最近更新 更多