- 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 源文件开始。以下是 Solidity 文件的示例 -
pragma solidity >=0.4.0 <0.6.0; contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; } function get() public view returns (uint) { return storedData; } }
杂注
第一行是一个 pragma 指令,它告诉源代码是为 Solidity 版本 0.4.0 或任何更新版本编写的,不会破坏 0.6.0 版本(但不包括)的功能。
pragma 指令始终位于源文件本地,如果导入另一个文件,则该文件中的 pragma 将不会自动应用于导入文件。
因此,无法编译早于 0.4.0 版本且也无法在从 0.5.0 版本开始的编译器上运行的文件的编译指示将编写如下 -
pragma solidity ^0.4.0;
这里使用 ^ 添加第二个条件。
合同
Solidity 合约是驻留在以太坊区块链上特定地址的代码(其功能)和数据(其状态)的集合。
uintstoredData 行声明了一个 uint 类型的名为 storageData 的状态变量,并且函数 set 和 get 可用于修改或检索该变量的值。
导入文件
虽然上面的示例没有 import 语句,但 Solidity 支持与 JavaScript 中可用的 import 语句非常相似的 import 语句。
以下语句从“filename”导入所有全局符号。
import "filename";
以下示例创建一个新的全局符号symbolName,其成员是“filename”中的所有全局符号。
import * as symbolName from "filename";
要从与当前文件相同的目录导入文件 x,请使用 import "./x" as x;。如果使用 import "x" as x; 相反,可以在全局“包含目录”中引用不同的文件。
保留关键字
以下是 Solidity 中的保留关键字 -
抽象的 | 后 | 别名 | 申请 |
汽车 | 案件 | 抓住 | 备份 |
默认 | 定义 | 最终的 | 不可变的 |
实施 | 在 | 排队 | 让 |
宏 | 匹配 | 可变的 | 无效的 |
的 | 覆盖 | 部分的 | 承诺 |
参考 | 可重新定位的 | 密封 | 大小 |
静止的 | 支持 | 转变 | 尝试 |
类型定义 | 类型 | 未经检查的 |