说我有两个功能:
fn function_with_one_argument(one: i64) -> bool{
one==one // irrelevant
}
fn function_with_two_arguments(one: i64, two: i64) -> bool {
one==two // irrelevant
}
Run Code Online (Sandbox Code Playgroud)
给定不同的输入值,我想返回一个不同的函数指针:
fn main() {
println!("\n\n{:?}\n\n", get_function_pointer(1)(321));
println!("{:?}", get_function_pointer(2)(321/*, 321*/));
}
Run Code Online (Sandbox Code Playgroud)
如何表示返回值以返回指向不同形状函数的指针?
fn get_function_pointer(id: i64) -> /***/(fn(i64) -> bool)/***/ {
match id {
1 => function_with_one_argument,
// 2 => function_with_two_arguments, /*How do we make this work?*?
_ => panic!("!?!?!")
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用枚举来表示函数的输出
enum Either<T, U> {
Left(T),
Right(U),
}
fn function_with_one_argument(one: i64) -> bool {
one == one // irrelevant
}
fn function_with_two_arguments(one: i64, two: i64) -> bool {
one == two // irrelevant
}
fn get_function_pointer(id: i64) -> Either<fn(i64) -> bool, fn(i64, i64) -> bool> {
match id {
1 => Either::Left(function_with_one_argument),
2 => Either::Right(function_with_two_arguments),
_ => panic!("!?!?!"),
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
516 次 |
最近记录: |