Skip to content

特殊变量

Solidity 中,除了全局变量之外,还有一种特殊的变量类型叫做特殊变量。这些变量是只读的,在整个合约中都可以被访问,用于提供有用的信息,例如合约地址等。

示例

以下是 Solidity 内置的一些常见特殊变量:

  • this: 当前合约的地址。
  • super: 父合约的引用。
  • selfdestruct: 合约销毁时的地址。
  • abi: 提供合约 ABI (应用程序二进制接口)的接口。

以下是一个简单的 Solidity 程序示例,其中展示了如何使用特殊变量:

solidity
pragma solidity ^0.8.0;

contract MyContract {
    address public contractAddress; // 声明一个公共的地址状态变量,名为contractAddress

    constructor() public {
        contractAddress = address(this); // 将当前合约的地址赋值给contractAddress
    }

    function getContractAddress() public view returns (address) {
        return contractAddress; // 返回合约地址
    }
}

在这个示例程序中,我们定义了一个名为 MyContract 的合约,并声明了一个公共的地址状态变量 contractAddress

在构造函数中,我们将当前合约的地址赋值给 contractAddress 变量。

getContractAddress 函数中,我们返回了合约的地址。

需要注意的是,特殊变量是只读的,不能进行修改,因此我们只能将其值赋给其他变量或返回其值。