gpt4 book ai didi

generics - 如何使用通用固定长度数组定义函数?

转载 作者:行者123 更新时间:2023-11-29 07:46:27 26 4
gpt4 key购买 nike

<分区>

对数组进行操作,例如对长度进行平方。

拥有泛型类型(如f32f64)很有用,但你可能也想要泛型长度,但不是动态长度。

这是一个带 2 个参数的平方函数的示例。

use std::ops::{Add, AddAssign, Sub, Mul};

const CAN_THIS_BE_GENERIC: usize = 2;

fn squared_length<T>(
a: &[T; CAN_THIS_BE_GENERIC],
b: &[T; CAN_THIS_BE_GENERIC]
) -> T
where T:
Copy +
Add +
AddAssign +
Add<Output=T> +
Sub<Output=T> +
Mul<Output=T>
{
let mut d: T = a[0] - a[0]; // zero :(
for (elem_a, elem_b) in a.iter().zip(b.iter()) {
let elem_dim: T = *elem_a - *elem_b;
d += elem_dim * elem_dim;
}
return d;
}

fn main() {
println!("Length A! {}", squared_length::<f64>(&[0.5, 3.5], &[10.0, 0.0]));
println!("Length B! {}", squared_length::<i32>(&[10, -6], &[4, 8]));
println!("Length C! {}", squared_length::<f32>(&[-3.0, 0.0], &[9.0, 0.0]));
}

目前向量长度设置为2。

是否可以定义大小不是动态但通用的通用函数,就像类型可以通用一样?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com