gpt4 book ai didi

types - 如何检查功能参数的类型?

转载 作者:行者123 更新时间:2023-12-03 11:41:24 25 4
gpt4 key购买 nike

我有一个功能:

fn my_function(my_float:f32) -> f32{
my_float - 1.55
}

使用此函数,如果我传递一个整数,(当然)我会得到一个错误:

expected type f32 found type {integer}

我想知道是否有一种方法可以从函数内部处理错误(或任何其他方法),例如如果用户传递字符串,整数或其他类型。

最佳答案

Rust是一种静态类型的编译语言。这样,它可以在编译时固定每个函数的类型。也就是说,通常您要确定函数接受的类型。

如果只想将不同的内容传递给函数,则可以使用泛型:

fn doit<T>(t: T) {...}

这样,您可以将不同的内容传递给 doit,但是您仍然必须在编译时决定。

现在,可以在运行时将不同的东西传递给函数。

一种可能性是创建一个枚举:
enum MyType {
F32(f32),
Str(String),
USize(usize),
}

然后,您的函数可以接受 MyType的参数,并可以决定要做什么。这种方法要求您预先指定要允许功能使用的类型(即在编译时)。

另一种运行时方法可能涉及 Any:
fn doit(t: &dyn std::any::Any) {
match t.downcast_ref::<usize>() {
Some(u) => println!("its usize: {}", u),
None => println!("not usize"),
}
}

fn main() {
doit(&2usize);
doit(&("sdf".to_string()));
}

我通常更喜欢在编译时尽可能多地执行操作,因为它往往会更早地发现错误。

关于types - 如何检查功能参数的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61410580/

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