Как определить функцию в Rust?

-1
задан trentcl 8 February 2019 в 13:02
поделиться

2 ответа

Есть два возможных способа сделать это.

First Way

Вы можете объявить функцию и передать ее в println!(), который похож на многие языки программирования, такие как Java,C# и т. Д.

//Declare the function
fn cross_product(slice1: &[i32], slice2: &[i32]) -> i32 {
    slice1[0] * slice2[1] - slice1[1] * slice2[2]
}

//Use it Like following
fn main() {
    let vec1 = vec![1, 2, 3];
    let vec2 = vec![4, 5, 6];

    println!("{}", cross_product(&vec1[..], &vec2[..]));
}

Second Way

Вы можете объявить замыкание и передать его в println!(), общую методологию функционального программирования:

// You can declare a closure and use it as function in the same code block
fn main() {
    let vec1 = vec![1, 2, 3];
    let vec2 = vec![4, 5, 6];

    let cross_product = |slice1: &[i32], slice2: &[i32]| -> i32 {
        let result = slice1[0] * slice2[1] - slice1[1] * slice2[2];
        result
    };

    println!("{}", cross_product(&vec1[..], &vec2[..]));
}

Обратите внимание, что я создал векторы и замыкания с использованием типа данных i32, который соответствует целому числу. Вы можете изменить тип с помощью f32 или, если хотите, более широкий диапазон с плавающей точкой f64.

0
ответ дан Akiner Alkan 8 February 2019 в 13:02
поделиться

Похоже, у вас в основном проблемы с синтаксисом 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, даже если вы пропустите векторы разных размеров.

0
ответ дан Shepmaster 8 February 2019 в 13:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: