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