【发布时间】:2017-03-03 23:14:52
【问题描述】:
假设我有两个功能:
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 main() {
println!("\n\n{:?}\n\n", get_function_pointer(1)(321));
println!("{:?}", get_function_pointer(2)(321/*, 321*/));
}
如何表示返回值以返回指向不同形状函数的指针?
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!("!?!?!")
}
}
【问题讨论】:
-
这两个函数甚至没有相同的原型。
function_with_two_arguments不是fn(i64) -> bool。您究竟想在这里实现什么目标? -
@E_net4 我想更改返回类型
get_function_pointer以返回更通用的函数签名。目标是动态地将不同形状的函数作为测试属性提供给快速检查。 -
quickcheck如何调用它接收到的函数?
-
你不能用单个数组或结构替换传入的参数吗?
-
@ChrisEmerson quickcheck 需要一个函数
where function is Testable。来源在这里:github.com/BurntSushi/quickcheck/blob/master/src/tester.rs
标签: rust