{"content":{"title":"Solidity 不可变变量","body":"## 不可变变量\r\n\r\n如果你打算不改变一个变量，最好明确你的意图。Solidity 有一个关键字可以做到这一点。\r\n\r\n```solidity\r\n\r\ncontract ExampleContract {\r\n\r\n    string immutable public name;\r\n\r\n    constructor(string memory _name) {\r\n        name = _name;\r\n    }\r\n}\r\n\r\n```\r\n\r\n**如果一个变量在构造函数中设置并且从不更新，那么它应该是不可变的**\r\n\r\n如果你尝试写入一个不可变变量，代码将无法编译。\r\n\r\n```solidity\r\n\r\ncontract ExampleContract {\r\n\r\n    string immutable public name;\r\n\r\n    constructor(string memory _name) {\r\n        name = _name;\r\n    }\r\n\r\n    // 错误：无法编译\r\n    function cannotChangeTheName(string calldata _newName)\r\n            external {\r\n                name = _newName;\r\n    }\r\n}\r\n\r\n```\r\n\r\n**练习题**\r\n\r\n[不可变](https://github.com/RareSkills/Solidity-Exercises/tree/main/Immutable)\r\n\r\n#### 了解更多 \r\n\r\n查看  [Solidity 训练营](https://learnblockchain.cn/openspace/1) ，以了解更多关于智能合约开发和代币标准的内容。\r\n\r\n \r\n\r\n>- 原文链接： [rareskills.io/learn-soli...](https://www.rareskills.io/learn-solidity/immutable-variables)\r\n>- 登链社区 AI 助手，为大家转译优秀英文文章，如有翻译不通的地方，还请包涵～"},"author":{"user":"https://learnblockchain.cn/people/20722","address":null},"history":null,"timestamp":1740625225,"version":1}