MST

星途 面试题库

面试题:Rust中变量作用域规则之基础应用

在Rust中,假设有以下代码片段:```rustfn main() { let x = 5; { let y = x + 3; println!("Inner: y = {}", y); } // 在这里尝试访问y会发生什么?为什么?请解释Rust变量作用域规则如何影响对y的访问。}```
49.1万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试

在这段代码中,在main函数内部的内层花括号中定义了变量y。当程序执行到内层花括号结束时,y的作用域结束。

当在// 在这里尝试访问y会发生什么?这一行尝试访问y时,会导致编译错误。因为Rust的变量作用域规则规定,变量的作用域从声明点开始,到包含该声明的最近的花括号结束。

y是在内层花括号内声明的,所以它的作用域仅限于该内层花括号。一旦程序离开这个花括号,y就不再有效,不能被访问。

例如,尝试编译如下修改后的代码:

fn main() {
    let x = 5;
    {
        let y = x + 3;
        println!("Inner: y = {}", y);
    }
    println!("Outer: y = {}", y); // 这里尝试访问y
}

会得到类似如下的编译错误:

error[E0425]: cannot find value `y` in this scope
 --> src/main.rs:7:28
  |
7 |     println!("Outer: y = {}", y);
  |                            ^ not found in this scope

总结来说,Rust通过花括号来界定变量的作用域,超出作用域访问变量会导致编译错误。