首页 > 解决方案 > Rust 中的数学语法

问题描述

在 Rust 中,简单的数学表达式的语法似乎sin(x)+cos(y)*sqrt(z)必须写成x.sin()+y.cos()*z.sqrt(),这很奇怪,而且是反自然的,并且在使用更复杂的表达式(exp、log、powers 等)时容易出错。

如何以“经典”方式编写数学表达式?如果不可能,为什么 Rust 要求以这种方式编写它们?

标签: rust

解决方案


如前所述,这些方法是在类型上定义的。一种可能的替代方法是直接调用该方法,例如:

f64::sqrt(25.0);

如果你真的想,你也可以像这样绑定它:

fn example_a(n: f64) -> f64 {
    let sqrt = f64::sqrt;

    sqrt(25.0)
}
const SQRT: fn(f64)-> f64 = f64::sqrt;

fn example_b(n: f64) -> f64 {
    SQRT(25.0)
}

推荐阅读