(日本語訳) Chain Castle – Lesson 1 Chapter 3

Libra
Libra Move言語
スポンサーリンク

Chapter 3 コントラクトのmain関数

main()

前のチャプタでは、モジュール構築の仕方を学びました。そして、このチャプタではモジュールをベースにしてコントラクトを完成させましょう。

私たちは、コントラクト内に「トランザクションスクリプト」と呼ばれる、他のどのコードからもコールされない様な、ワンタイム実行コードを埋め込むことができます。トランザクションスクリプトはscript:の記述から始まります。

main()はトランザクションスクリプトを実行するための開始箇所です。main()の様なコードブロックは「プロシージャ」と言います。後のチャプタでこれらのコンセプトについては解説します。main()は特にスペシャルなプロシージャです。

main()を含む、全てのプロシージャはreturnで終わることに注意してください。Moveコンパイラはreturnがなかったらそれを自動で補う様な、如何なる処理も行うことなくダイレクトに変換する、その名の通りの(単純な)コンパイラです。

Moveのコントラクトを書くとき、私たちはmain()を含む普通のプロシージャにおいて、いつも全ての操作を記述し、それをモジュールに配置します。最終的に、スクリプトセクションでモジュールをインポートし、そして、一連の操作実行のために、モジュールのプロシージャ群を開始ポイントのmain()と共に呼び出します。概要を次の図で示します。

図

モジュール内で他のモジュールをインポートする必要があるとき、インポートの記述は、例えばモジュール名の記述の次の行に書くなど、モジュールの最初に書く必要がありますので注意してください。
そして、スクリプト部分で、モジュールをインポートする必要がある場合も、インポート記述はセクションの最初の行である必要があります。例えば、script:の次の行やmain()の1行目などです。

まとめに、基本的な空白のコントラクトのサンプルをお見せします。

modules: 
module Contract {

}

script: 
import Transaction.Contract;
main() {
    return;
}

実習

城を作るために、まずBuildCastleという名前のモジュールやmain()を含んだ、空のコントラクトを作る必要があります。

  1. 最初にmodules:script:を追加します:
  2. main()script:の次の行に加えます。returnmain()内につけることを忘れないでください。
  3. スクリプトセクションにmoduleをインポートします(main()の前の行に)。
Move Castle
タイトルとURLをコピーしました