solidity(11)

🔮 Solidity变量指南:探寻状态、局部和全局三界之秘🌌

在Solidity的神秘大陆上,变量就像是散落在时间和空间中的宝石💎,每颗都有它独特的魔力和作用域。掌握这三种变量,是成为合约法师的重要一步。

### 1️⃣ 状态变量(State Variable)—— 链上的恒星⭐️

- 定义:状态变量就像是树根一样植根于区块链的土壤中。它们是合约结构中的常青树,坚如磐石。
- 特点:在合约的任何角落,它们都迸发着光彩,但每次变动都会激起Gas的波涛。
- 示例:

  contract Variables {
      uint public x = 1; // 这些是我坚不可摧的状态变量;
      // ...
  }
  

### 2️⃣ 局部变量(Local Variable)—— 函数的幻影🎩

- 定义:函数的暗影战士,行动迅速,随着函数的消逝而灰飞烟灭。
- 特点:它们敏捷地舞动在内存中,不留痕迹,经济又高效,消耗的Gas少之又少。
- 示例:

  function bar() external pure returns (uint) {
      uint xx = 1; // 局部变量,我来了又走,短暂如梦;
      // ...
  }
  

### 3️⃣ 全局变量(Global Variable)—— 世界之窗🌎

- 定义:这是Solidity提供的巫术工具,智者的知识,通往区块链世界的钥匙。
- 特点:如同星空中的指南针,指示交易和区块的秘密。它们毫无寒意,随手可得,无须任何祭品。
- 示例:

  function global() external view returns (address, uint, bytes memory) {
      address sender = msg.sender; // 全局变量,透露着宇宙的奥秘;
      // ...
  }
  

- 常用全球魔法:
  - blockhash(uint blockNumber):揭示区块的秘密符文;
  - block.coinbase:矿工的藏宝图;
  - block.number:历史的卷轴;
  - msg.sender:召唤师的真名;
  - ...以及更多。

掌握状态、局部和全局变量,就如同握住Solidity魔法棒,数据在你手中轻盈舞动,合约编织着高效和安全的双重保障。在智能合约的编程艺术中,这些变量成就了你管理和操控数据的力量。

pragma solidity ^0.8.0;

contract Variables {
    // 1. 状态变量(State Variable)
    uint public x = 1;
    uint public y;
    string public z;

    // 2. 局部变量(Local Variable)
    function bar() external pure returns (uint) {
        uint xx = 1;
        uint yy = 3;
        uint zz = xx + yy;
        return zz;
    }

    // 3. 全局变量(Global Variable)
    function global() external view returns (address, uint, bytes memory) {
        address sender = msg.sender;
        uint blockNum = block.number;
        bytes memory data = msg.data;
        return (sender, blockNum, data);
    }

    // 修改状态变量的函数
    function foo() external {
        x = 5;
        y = 2;
        z = "0xAA";
    }
}

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值