9
鉴于以下锈程序:如何通过一个函数作为参数拉斯特
fn call_twice<A>(val: A, f: fn(A) -> A) -> A {
f(f(val))
}
fn main() {
fn double(x: int) -> int {x + x};
println!("Res is {}", call_twice(10i, double));
// println!("Res is {}", call_twice(10i, (x: int) -> int {x + x}));
//^this line will fail
}
我为什么可以通过double
的功能,而不是内联?没有在某处定义函数,实现相同行为的好方法是什么?
感谢您的解释。这个临时变量有点奇怪,但我认为这会在更稳定的版本中修复。 – 2014-11-23 09:21:24
这似乎并不具有防锈1.7的工作:https://play.rust-lang.org/?gist=ad35b80eeae1d1966944a66a75d0ad80&version=stable – 2016-03-31 14:48:09
@SandeepDatta这个答案是在2014年;即使在Rust 1.0上,该代码也会失效。我已经更新了它。 – 2016-04-01 01:18:13