D5
将fn add(x: i32, y: i32) -> fn() {
let z = x + y;
mul(z, 2);
}
fn mul(x1: i32, y1: i32) -> fn() {
let z1 = x1 * y1;
sub(z1, 2);
}
fn sub(x2: i32, y2: i32) -> (i32) {
let z2 = x2 - y2;
z2
}
fn main() {
let R = add(2, 2);
println!("{}", R);
}
分配给R
并不起作用。我需要能够从添加中分配add(2, 2)
- > mul - >返回z2的sub。
因此,该过程为R
- > add(2, 2)
- > mul(4, 2)
因此得到R = 6.我该怎么做呢?
这是我得到的错误:
sub(8, 2)
答案 0 :(得分:3)
在我看来,你对返回函数类型的语法感到困惑。经过几次小编辑后,代码完美编译:
fn add(x: i32, y: i32) -> i32 {
let z = x + y;
mul(z, 2)
}
fn mul(x1: i32, y1: i32) -> i32 {
let z1 = x1 * y1;
sub(z1, 2)
}
fn sub(x2: i32, y2: i32) -> i32 {
let z2 = x2 - y2;
z2
}
请注意,所有函数的返回类型现在为i32
。返回fn()
意味着完全不同的东西,在这种情况下没有意义。另外,我在add
和mul
的末尾删除了分号,因此Rust知道它们是返回值。