如果函数依赖于另一个函数,如何将变量分配给最终产品?

时间:2017-04-13 01:13:30

标签: rust

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)

1 个答案:

答案 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()意味着完全不同的东西,在这种情况下没有意义。另外,我在addmul的末尾删除了分号,因此Rust知道它们是返回值。