Solidity 变量类型

2025 年 5 月 27 日 | 4 分钟阅读

Solidity 是一种用于创建智能合约的高级、面向对象的编程语言。它是静态类型的,专门用于利用 EVM(以太坊虚拟机)。

每种编程语言都有其变量,它们充当可在运行时操作的数据的占位符。它们通常由程序员用来存储、更改或获取数据。

Solidity 中,不同的变量类型如下

  1. 状态变量
  2. 局部变量
  3. 全局变量
  4. 数组

状态变量

在状态变量中,值存储在合约存储中,并且这些值是永久性的。在 Solidity 中,每个函数都有其自己的作用域,状态变量的唯一条件是它应该在作用域之外声明。

示例 1

在下面的示例中,我们正在创建合约 StateVariableExample,声明无符号整数状态的值并使用名为 setHeight() 的函数初始化变量。

输出

Solidity Variable Types

局部变量

此变量的作用域仅在执行它的函数中,并且无法在函数外部访问局部变量。局部变量中存储的值通常是临时的。

示例 1

在下面的示例中,我们正在创建合约 localVariablesExample,它使用一个函数,并在该函数内部声明和初始化一个整数局部变量的值,最后返回结果。

输出

Solidity Variable Types

全局变量

这些变量的作用域是全局的,可以在智能合约的任何地方使用。它被全局使用来提供有关交易和区块链属性的信息。下面给出了几个全局变量的列表

序号变量返回值
1.blockhash(uint blockNumber) returns (bytes32)给定区块的哈希值 - 它仅适用于最近的 256 个区块,但不包括当前区块
2.block.coinbase (address payable)当前区块矿工的地址
3.block.difficulty (uint)当前区块难度
4.block.gaslimit (uint)当前区块 gaslimit
5.block.number (uint)当前区块编号
6.block.timestamp (uint)当前区块的时间戳,以自 unix epoch 以来经过的秒数表示
7.msg.value (uint)随消息发送的 Wei 数量
8.msg.sig (bytes4)调用数据的前四个字节,即函数标识符
9.now (uint)当前区块的时间戳
10.tx.origin (address payable)交易发起者

示例

在下面的示例中,我们正在创建合约 GlobalVariableExample,声明一个无符号整数,然后使用构造函数中的全局变量 msg.sender 部署合约。

输出

Solidity Variable Types

Array

数组是一种由数据集合组成的数据结构。数组有两种类型:固定长度数组和动态数组。

示例

在下面的程序中,我们正在创建一个名为 studentDetails 的合约,它使用固定大小和动态数组,以便能够存储和检索固定大小数组中的年龄值和动态数组中的电话号码。

输出

Solidity Variable Types