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
第一行是一个 pragma 指令,它告诉我们源代码是为 Solidity 版本 0.4.0 或任何更新版本编写的,不会破坏 0.6.0 版本(但不包括)的功能。
pragma 指令始终位于源文件本地,如果您导入另一个文件,则该文件中的 pragma 将不会自动应用于导入文件。
因此,对于无法编译早于 0.4.0 版本且也无法在从版本 0.5.0 开始的编译器上运行的文件的编译指示将编写如下 −
pragma solidity ^0.4.0;
这里使用 ^ 添加第二个条件。
合约
Solidity 合约是驻留在以太坊区块链上特定地址的代码(其功能)和数据(其状态)的集合。
行 uintstoredData 声明了一个 uint 类型的名为storedData 的状态变量,并且函数 set 和 get 可用于修改或检索该变量的值。
导入文件
虽然上面的示例没有 import 语句,但 Solidity 支持与 JavaScript 中可用的导入语句非常相似的 import 语句。
以下语句从"filename"导入所有全局符号。
import "filename";
以下示例创建一个新的全局符号symbolName,其成员是"filename"中的所有全局符号。
import * as symbolName from "filename";
要从与当前文件相同的目录导入文件 x,请使用 import "./x" as x;。 如果使用 import "x" as x;相反,可以在全局"包含目录"中引用不同的文件。
保留关键字
以下是Solidity中的保留关键字 −
abstract | after | alias | apply |
auto | case | catch | copyof |
default | define | final | immutable |
implements | in | inline | let |
macro | match | mutable | null |
of | override | partial | promise |
reference | relocatable | sealed | sizeof |
static | supports | switch | try |
typedef | typeof | unchecked |