Skip to content

Latest commit

 

History

History
70 lines (56 loc) · 2.08 KB

File metadata and controls

70 lines (56 loc) · 2.08 KB

Solidity文件结构

版本标识

为了避免未来可能引入不兼容的编译器所编译,源文件需要在开头标识合约的版本,例子:

pragma solidity ^0.5.0;

这样源文件既不允许低于0.5.0版本的编译器编译,也不允许高于(包含)0.6.0版本的编译器编译。

源文件导入

Solidity同样支持从不同的文件里导入方法,其语法非常像JavaScript的ES6标准。 全局导入

import "filename"

此语句将从 “filename” 中导入所有的全局符号到当前全局作用域中。

import * as symbolName from "filename";

创建一个新的全局符号 symbolName,其成员均来自 "filename" 中全局符号。

import {symbol1 as alias, symbol2} from "filename";

创建新的全局符号 alias 和 symbol2,分别从 "filename" 引用 symbol1 和 symbol2。

另一种语法不属于 ES6,但或许更简便:

import "filename" as symbolName;

这条语句等同于 import * as symbolName from "filename";

路径

上文中的 filename 总是会按路径来处理,以/作为目录分割符、以 . 标示当前目录、以 .. 表示父目录。 当 ... 后面跟随的字符是 / 时,它们才能被当做当前目录或父目录。 只有路径以当前目录 . 或父目录 .. 开头时,才能被视为相对路径。

import "./x" as x; 语句导入当前源文件同目录下的文件 x 。 如果用 import "x" as x; 代替,可能会引入不同的文件(在全局 include directory 中)。

注释

可以使用单行注释//和多行注释/*...*/

// 这是一个单行注释。

/*
这是一个
多行注释。
*/

举个例子

pragma solidity ^0.5.0;

/** @title 形状计算器。 */
contract tinyCalculator {
    /** @dev 求矩形表明面积与周长。
    * @param w 矩形宽度。
    * @param h 矩形高度。
    * @return s 求得表面积。
    * @return p 求得周长。
    */
    function rectangle(uint w, uint h) public pure returns (uint s, uint p) {
        s = w * h;
        p = 2 * (w + h);
    }
}