MALOUDA-PSA 2024-04-27 10:10 采纳率: 90.5%
浏览 1
已结题

rust重复定义的问题


let val1 = 5;
    let val2 = 2;
    let ans = val1 % val2;

    println!{"{}", ans};


    let str1 = String::from("Hello");

    let ans = concat_string(str1);
    println!{"{}", ans};

    control_flow(25);

这里重复定义了ans , 为什么编译器不会报错?

  • 写回答

4条回答 默认 最新

  • 码农阿豪 Java领域优质创作者 2024-04-27 10:10
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    在 Rust 中,变量重复定义是允许的。每次重复定义后,上一个变量就会被遮盖并被覆盖,这意味着您无法再访问先前定义的变量。 例如,在给定的代码中,val1, val2和ans在第一组定义之后立即被初始化,然后在第二组定义之后再次被初始化。每个定义之后的代码都可以访问它们,而每个重复定义仅影响在其之下的代码。 以下是一个例子:
    let val1 = 5;   
    let val2 = 2;    
    let ans = val1 % val2;    
    println!("{}", ans);   
    let str1 = String::from("Hello");    
    let ans = concat_string(str1);    
    println!("{}", ans);    
    let ans = "This is a new value of ans";    
    println!("{}", ans);
    

    在这个例子中,第一个ans存储val1 % val2的计算结果,第二个ans存储concat_string的结果,第三个ans存储一个新的字符串。每次重新定义ans时,先前定义的变量将被覆盖,并且只有一个最新的定义可以访问。在第二个ans定义之前,第一个ans是可见的,但在第二个ans之后,第一个ans已被覆盖并无法再被访问。 因此,编译器不会报错,因为每个新定义将覆盖之前的定义,而且Rust允许这种行为。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月5日
  • 已采纳回答 4月27日
  • 创建了问题 4月27日

悬赏问题

  • ¥15 请问为什么我配置IPsec后PC1 ping不通 PC2,抓包出来数据包也并没有被加密
  • ¥200 求博主教我搞定neo4j简易问答系统,有偿
  • ¥15 nginx的使用与作用
  • ¥100 关于#VijeoCitect#的问题,如何解决?(标签-ar|关键词-数据类型)
  • ¥15 一个矿井排水监控系统的plc梯形图,求各程序段都是什么意思
  • ¥50 安卓10如何在没有root权限的情况下设置开机自动启动指定app?
  • ¥15 ats2837 spi2从机的代码
  • ¥200 wsl2 vllm qwen1.5部署问题
  • ¥100 有偿求数字经济对经贸的影响机制的一个数学模型,弄不出来已经快要碎掉了
  • ¥15 数学建模数学建模需要