- Solidity 教程
- Solidity - 主页
- Solidity - 概述
- Solidity - 环境设置
- Solidity - 基本语法
- Solidity - 首次应用
- Solidity - 评论
- 坚固性 - 类型
- Solidity - 变量
- Solidity - 可变范围
- Solidity - 运算符
- 坚固性 - 循环
- Solidity - 决策
- 坚固性 - 弦乐
- Solidity - 数组
- Solidity - 枚举
- Solidity - 结构
- Solidity - 映射
- 坚固性 - 转换
- Solidity - 以太币单位
- Solidity - 特殊变量
- Solidity - 风格指南
- 实体函数
- Solidity - 函数
- Solidity - 函数修饰符
- Solidity - 查看函数
- Solidity - 纯函数
- Solidity - 后备函数
- 函数重载
- 数学函数
- 加密函数
- Solidity 常见模式
- Solidity - 提款模式
- Solidity - 限制访问
- 坚固进阶
- Solidity - 合约
- 坚固性——继承
- Solidity - 构造函数
- Solidity - 抽象合约
- Solidity - 接口
- Solidity - 库
- 坚固性 - 装配
- Solidity - 活动
- Solidity - 错误处理
- Solidity 有用资源
- Solidity - 快速指南
- Solidity - 有用的资源
- 坚固性 - 讨论
Solidity - 变量
Solidity 支持三种类型的变量。
状态变量- 其值永久存储在合约存储中的变量。
局部变量- 其值在函数执行之前一直存在的变量。
全局变量- 全局命名空间中存在特殊变量,用于获取有关区块链的信息。
Solidity 是一种静态类型语言,这意味着需要在声明时指定状态或局部变量类型。每个声明的变量始终具有基于其类型的默认值。没有“未定义”或“空”的概念。
状态变量
其值永久存储在合约存储中的变量。
pragma solidity ^0.5.0; contract SolidityTest { uint storedData; // State variable constructor() public { storedData = 10; // Using State variable } }
局部变数
其值仅在定义它的函数内可用的变量。函数参数始终是该函数的本地参数。
pragma solidity ^0.5.0; contract SolidityTest { uint storedData; // State variable constructor() public { storedData = 10; } function getResult() public view returns(uint){ uint a = 1; // local variable uint b = 2; uint result = a + b; return result; //access the local variable } }
例子
pragma solidity ^0.5.0; contract SolidityTest { uint storedData; // State variable constructor() public { storedData = 10; } function getResult() public view returns(uint){ uint a = 1; // local variable uint b = 2; uint result = a + b; return storedData; //access the state variable } }
使用Solidity First Application章节中提供的步骤运行上述程序。
输出
0: uint256: 10
全局变量
这些是存在于全局工作区中的特殊变量,提供有关区块链和交易属性的信息。
姓名 | 退货 |
---|---|
blockhash(uint blockNumber) 返回 (bytes32) | 给定区块的哈希值 - 仅适用于 256 个最新区块(不包括当前区块) |
block.coinbase(应付地址) | 当前区块矿工地址 |
区块难度 (uint) | 当前区块难度 |
区块.gaslimit (uint) | 当前区块gaslimit |
块号(uint) | 当前区块号 |
区块时间戳 (uint) | 当前块时间戳(自 Unix 纪元以来的秒数) |
Gasleft() 返回 (uint256) | 剩余气体 |
msg.data(调用数据字节) | 完整的通话数据 |
msg.sender(应付地址) | 消息发送者(当前呼叫者) |
msg.sig(字节4) | calldata 的前四个字节(函数标识符) |
消息值(uint) | 随消息一起发送的 wei 数量 |
现在(单位) | 当前区块时间戳 |
tx.gasprice (uint) | 交易的 Gas 价格 |
tx.origin(应付地址) | 交易发送者 |
Solidity 变量名称
在 Solidity 中命名变量时,请记住以下规则。
您不应使用任何 Solidity 保留关键字作为变量名称。这些关键字将在下一节中提到。例如,中断或布尔变量名称无效。
Solidity 变量名称不应以数字 (0-9) 开头。它们必须以字母或下划线字符开头。例如,123test 是无效变量名称,但 _123test 是有效变量名称。
Solidity 变量名称区分大小写。例如,Name 和 name 是两个不同的变量。