当变量和函数具有相同的名称时,如何调用函数?

时间:2019-12-16 08:44:16

标签: rust

变量和函数具有相同的名称。如何调用该函数?

fn main() {
    let a = 1;
    fn a() -> i32 {
        2
    }
    println!("{}", a());
}

Rust编译器告诉我:

error[E0618]: expected function, found `{integer}`

换句话说,Rust编译器不会调用a函数,而是访问a变量。

1 个答案:

答案 0 :(得分:8)

无法完成此操作,因为您没有println所在的函数和整数。

由于函数通常在整个范围内都可用(即,您可以在声明它们之前使用它们),因此它们的声明从概念上讲移到了范围的开头(它们被“吊起”)。

结果是函数声明在整数变量声明之前,并且已被遮盖。

代码的真正修复取决于您的实际情况。也许是这样的:

fn main() {
    {
        let a = 1;
        // use the integer there
    }
    fn a() -> i32 {
        2
    }
    println!("{}", a());
}