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