首页 > 解决方案 > 如何在 Rust 中定义函数?

问题描述

我决定在 Rust 中做 2D 矢量叉积。在 JavaScript 中,这很简单:

float CrossProduct( const Vec2& a, const Vec2& b ) {
    return a.x * b.y - a.y * b.x;
}

我尝试将其转换为 Rust 系统:

// Just created two separate variables for the two different vectors

let vec1 = vec![1.15, 7.0];
let vec2 = vec![7.0, 2.0];
let cross_product(&vec1, &vec2) = vec1[0] * vec2[1] - vec1[1] * vec2[0];
println!("{}", cross_product);

// I also tried return.
let vec1 = vec![1.15, 7.0];
let vec2 = vec![7.0, 2.0];
let cross_product(&vec1, &vec2) {
    return (vec1[0] * vec2[1] - vec1[1] * vec2[0]);
}
println!("{}", cross_product);

我认为其中一个会起作用,但这对我来说更像是一个现实检查,Rust 与我以前使用的任何语言有多么不同。

我发现了一种非常低效的方法来解决这个问题,但是我宁愿学会正确地做到这一点。我是 Rust 的新手,所以请对我的尝试持保留态度。

标签: rust

解决方案


看起来您主要是在使用 Rust 语法时遇到问题。您可以创建叉积函数或内联执行叉积。

let vec1 = vec![1.15, 7.0];
let vec2 = vec![7.0, 2.0];
let cross_product = vec1[0] * vec2[1] - vec1[1] * vec2[0];
println!("{}", cross_product);

如果你想要一个功能,你可以不断地使用。

fn function_cross_product(vec1: Vec<f64>, vec2: Vec<f64>) -> f64 {
  return vec1[0] * vec2[1] - vec1[1] * vec2[0];
};
let other_product = function_cross_product(vec1, vec2);
println!("{}", other_product);

第二种解决方案可能会产生误导,因为即使您传递不同大小的向量,它也总是会产生 2x2 向量的叉积。


推荐阅读