📅  最后修改于: 2020-11-02 04:57:09             🧑  作者: Mango
Solidity源文件可以包含任意数量的合同定义,导入指令和编译指示。
让我们从一个简单的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;
}
}
第一行是编译指示,它指示源代码是为Solidity版本0.4.0或任何不破坏功能(但不包括版本0.6.0)的较新版本编写的。
编译指示始终位于源文件的本地,如果您导入另一个文件,则来自该文件的编译将不会自动应用于导入文件。
因此,对于一个不会早于版本0.4.0进行编译并且也无法在版本0.5.0开始的编译器上运行的文件,将使用以下语法:
pragma solidity ^0.4.0;
在这里,第二个条件通过使用^添加。
Solidity合约是位于以太坊区块链上特定地址的代码(其功能)和数据(其状态)的集合。
uintstoredData行声明了一个名为uint类型的状态为storedData的状态变量,并且set和get函数可用于修改或检索变量的值。
虽然上面的示例没有导入语句,但是Solidity支持与JavaScript中可用的导入语句非常相似的导入语句。
以下语句从“文件名”导入所有全局符号。
import "filename";
以下示例创建一个新的全局符号symbolName,其成员都是“文件名”中的所有全局符号。
import * as symbolName from "filename";
要从与当前文件相同的目录中导入文件x,请使用import“ ./x”作为x;。如果将import“ x”用作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 |