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 中的保留关键字 -

抽象的 别名 申请
汽车 案件 抓住 备份
默认 定义 最终的 不可变的
实施 排队
匹配 可变的 无效的
覆盖 部分的 承诺
参考 可重新定位的 密封 大小
静止的 支持 转变 尝试
类型定义 类型 未经检查的