Skip to content

Latest commit

 

History

History
69 lines (51 loc) · 2.04 KB

04 变量.md

File metadata and controls

69 lines (51 loc) · 2.04 KB

变量

在 Solidity 中有 3 种类型的变量:

- 局部变量
  - 在函数内声明
  - 不存储在区块链上
状态变量
  - 在函数外声明
  - 存储在区块链上
- 全局变量(提供有关区块链的信息)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

contract Variables {
    // State variables are stored on the blockchain.
    string public text = "Hello";
    uint public num = 123;

    function doSomething() public {
        // Local variables are not saved to the blockchain.
        uint i = 456;

        // Here are some global variables
        uint timestamp = block.timestamp; // Current block timestamp
        address sender = msg.sender; // address of the caller
    }
}

术语解释:

局部变量:在函数内声明的变量,不会存储在区块链上。
状态变量:在函数外声明的变量,存储在区块链上。
全局变量:提供有关区块链的信息的变量,例如 block.timestamp 返回当前块的时间戳,msg.sender 返回调用函数的地址。

扩充

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

contract Variables {
    //Local存在函数内存中 调用的时候才有
    //state 在函数之外声明 存储在区块链上
        //blockchain 存在链上 需要消耗GAS 
    //global是默认的全局变量,提供有关区块链的信息
    string public text = "Hello";  //存在区块链上
    uint public num = 123;

    function doSomething() public view returns (uint,address){

        uint i = 456;   //内存变量 在调用这个函数的时候才会使用此变量
 

        uint times = block.timestamp;  //当前区块的时间戳,全局变量
        address sender = msg.sender;   
        return (times,sender);
    }

内联汇编:内联汇编 — Solidity 0.8.17 文档 (soliditylang.org)

更多全局变量:速查表 — Solidity 0.8.17 文档 (soliditylang.org)