(日本語訳) Chain Castle – Lesson 2 Chapter 6

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

Chapter 6 城の設計を完了する

チャプタ3で、どうやって構造体を定義するか学びました。ここでは、構造体をどうやって初期化するかmain()プロシージャでどの様に使っていくかについて学んでいきましょう。

次の図の様に、構造体を初期化するためのプロシージャを作ることがあります。このプロシージャは、同じモジュールで宣言されて初期化される必要があります。構造体を初期化するために使われるプロシージャの戻り値はstruct型で、初期メンバー変数値をもった構造体を返すことで初期化を行うものです。

module Bar {
    struct T {
        baz: u64
    }
    public new(m: u64) : Self.T {
        return T {
            baz: move(m)
        };
    }
}

この例では、モジュールBarに構造体Tを定義し、newという名前のプロシージャによって、パラメータで構造体のメンバー変数を初期化します。

newプロシージャでは、メンバー変数bazの値がプロシージャのパラメータmである構造体Tを返します。

上記のコードで、6行目から8行目のコードは形式的に構造体の定義部分に似ていますが、実際にはreturn構文の一部ですので、気をつけてください。そのため、後ろにセミコロンがあります。

main()や他のプロシージャで構造体Tを使いたいときletステートメントを使って変数をstruct型として宣言し、newプロシージャを呼び出してそれを初期化できます。

例えば、続くコードは変数xをメンバー変数10を持った構造体Tに初期化します。

let x: Bar.T;
x = Bar.new(10)

実習

前のチャプタで、城を作るためのいくつかの重要なプロセスについて学んでいますので、次のステップはそれらを組み合わせてmain()プロシージャ内で城を構築しましょう。

  1. 構造体型のCastle変数を初期化するための、newCastleプロシージャをBuildCastleモジュールに付け加えてください。このプロシージャは次のふたつのパラメータを持ちます。
    • _name (bytearray):城の名前です。
    • _SerialNum (u64) :城のシリアルナンバーを特定します。
      Note:main()の中のnameSerialNumと区別するために上のパラメータ名の前にはアンダースコアをつけています。
      このプロシージャはSelf.Castle型の戻り値を持っています。
      このコースの下の例に従って、二つのパラメータ(すなわち_name_SerialNum)に基づいて城を初期化してください。
      Tips:城の名前とシリアル番号は対応する値に初期化されます。さらに、城のレベルは1に初期化され、経済力と軍事力はracial_judgement()プロシージャを呼んで計算された値によって初期化されます。

      1. メインプロシージャで城の名前はユーザによって入力されます。そのためnameパラメータは外部入力です。このケースではnameという名前のパラメータをbytearray型でmain()プロシージャに追加する必要があります。
      2. main()castle変数を追加してそれを初期化してください。注意:はじめにletステートメントを入れることを覚えておいてください。
Move Castle
タイトルとURLをコピーしました