Solidityインテリジェント契約のファイル構造
3575 ワード
Solidityインテリジェント契約ファイル構造
バージョンの説明
pragma solidity ^0.4.0;
説明:1バージョンは0.4より高くなければコンパイルできません2^号は0.5より高いバージョンを表すとコンパイルできません.3番目のバージョン番号は変更できますが、バグとして残して修復できます(0.4.1のコンパイラにバグがあり、0.4.2で修復できます.既存の契約はコードを変更しません).
その他のソースファイルを参照
pragma solidity ^0.4.0;
import “filename”;
import * as symbolName from “filename”
導入の個別定義
import {symbol1 as alias, symbol2} from “filename”
非es 6互換の略語構文
import “filename” as symbolName
上記と同等
import * as symbolName from “filename”
パスについて
ファイルパスを導入するときは、
.
ヘッダ以外のパスは絶対パスとみなされるので、同じディレクトリのファイルを参照して使用します.
import “./x” as x
次の方法も使用しないでください.これはグローバルなディレクトリの下にあります.
import “x” as x;
なぜこの違いがあるのかは、コンパイラによって異なります.解析パスの場合、通常、ディレクトリ階層構造はローカルのファイルに1つ1つ対応していません.ipfs、http、gitによって構築されたネットワーク上の仮想ディレクトリである可能性が高いからです.
コンパイラ解析リファレンスファイルメカニズム
各コンパイラは、ファイル接頭辞マッピングメカニズムを提供します.
solcコンパイラ
コマンドラインコンパイラ、次のコマンドネーミングスペースマッピングでサポート
context:prefix=target
上記の
context:
および=target
はオプションである.すべてのcontext
ディレクトリの下にあるprefix
で始まるものは、target
に置き換えられます.たとえば、github.com/ethereum/dapp-bin
をローカルの/usr/local/dapp-bin
にコピーし、次の方法でファイルを使用します.
import “github.com/ethereum/dapp-bin/library/iterable_mapping.sol” as it_mapping;
このファイルをコンパイルするには、次のコマンドを使用します.
solc github.com/ethereum/dapp-bin=/usr/local/dapp-bin source.sol
もう1つのより複雑な例は、より古いバージョンのdapp-binを使用する場合、古いバージョンは/url/local/dapp-bin_old、では、次のコマンドを使用してコンパイルできます.
solc module1:github.com/ethereum/dapp-bin=/usr/local/dapp-bin \
modeule2:github.com/ethereum/dapp-bin=/usr/local/dapp-bin_old \
source.sol
solcは、実際に存在するファイルのみを含むことを許可することに注意してください.再マッピングされたディレクトリまたはサブディレクトリに存在する必要があります.直接の絶対パスを含む場合は、名前空間を
=\
注記に再マッピングできます.複数の再マッピングが同じファイルを指している場合は、最長のファイルを取得します.browser-solidityコンパイラ:
browser-solidityコンパイラはデフォルトでgithubに自動的にマッピングされ、ネットワークからファイルが自動的に取得されます.たとえば、反復パケットを次のように導入できます.
import “github.com/ethereum/dapp-bin/library/iterable_mapping.sol” as it_mapping
備考:将来、他のソース方式がサポートされる可能性があります.
コードコメント
2つの方法、1行(
//
)、複数行使用(/*…*/
)例
// this is a single-line comment
/*
this is a
mulit-line comment
*/
ドキュメントコメント
文書作成用.3つのスラッシュ
///
または/** … */
は、Doxygen
構文を使用して、ドキュメントの説明、パラメータ検証の注釈の生成、またはユーザがこの関数を呼び出すときに弾き出される確認内容をサポートすることができる.例
pragma solidity ^0.4.0;
/** @title Shape calculator.*/
contract shapeCalculator{
/**
*@dev calculate a rectangle's suface and perimeter
*@param w width of the rectangles
*@param h height of the rectangles
*@return s surface of the rectangles
*@return p perimeter of the rectangles
*/
function rectangles(uint w, uint h) returns (uint s, uint p){
s = w * h;
p = 2 * ( w + h) ;
}
}