solidity的变量修饰符
时间: 2025-01-02 21:34:38 浏览: 6
### Solidity 中变量修饰符的使用方法、定义及其示例
#### 一、`public` 状态变量与 getter 函数
当声明一个 `public` 的状态变量时,编译器会自动为此变量创建一个 getter 函数。这意味着外部合约可以读取该变量的值而无需显式定义访问函数[^1]。
例如:
```solidity
pragma solidity ^0.8.0;
contract Example {
uint public myVariable;
}
```
在这个例子中,虽然只定义了一个名为 `myVariable` 的公共状态变量,但实际上也隐含地提供了一个可以通过 `example.myVariable()` 调用来获取其当前值的方法。
#### 二、`view` 和 `pure` 作为函数属性而非传统意义上的修饰符
尽管 `view` 和 `pure` 经常被提及为“修饰符”,实际上它们更准确地说是函数类型的限定词。这些关键字用于表明特定函数不会更改区块链上的任何数据——即所谓的无副作用操作[^2]。
- **View**: 表明此函数仅能查询链上存储的数据而不做任何形式的修改;它可能会消耗少量 gas 来执行内部计算。
- **Pure**: 进一步限制了 view 所允许的操作范围,表示连对本地内存也不得有任何依赖或影响,完全基于输入参数完成运算并返回结果。
下面是一个简单的对比展示如何应用这两种特性:
```solidity
// View example: Reads from state but does not modify it.
function readState() external view returns (uint) {
return someStoredValue; // Assume 'someStoredValue' is a previously defined storage variable
}
// Pure example: Does not depend on or alter the contract's state at all.
function addNumbers(uint x, uint y) external pure returns (uint sum) {
assembly { sum := add(x, y) }
}
```
通过上述解释可以看出,在现代版本的 Solidity 编程实践中推荐优先采用更为精确且具有更好表达力的新一代关键词 (`view`, `pure`) 替代旧版 `constant` 关键字来标注那些本质上属于只读性质的功能模块。
阅读全文