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 不会自动应用于导入文件。

因此,一个 pragma 指令,它要求编译器版本不早于 0.4.0,也不晚于 0.5.0,可以这样写:

pragma solidity ^0.4.0;

这里第二个条件是通过使用 ^ 添加的。

合约

Solidity 合约是代码(其函数)和数据(其状态)的集合,它驻留在以太坊区块链上的特定地址。

uint storedData 行声明了一个名为 storedData 的状态变量,其类型为 uint,set 和 get 函数可以用来修改或检索变量的值。

导入文件

虽然上面的例子没有导入语句,但 Solidity 支持与 JavaScript 中非常相似的导入语句。

以下语句从 "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
广告