"分岐サンプル" Step-by-step チュートリアル
はじめに
StateGoを理解して頂くために一ステップずつ解説するチュートリアルです。
分岐処理を学習します。
プログラム仕様
これから作るプログラムの仕様は以下のとおりです。
ランダムで1から10の数字を一つ選択
1の場合は"1st"
2の場合は"2nd"
3の場合は "3rd"
4以降は "4th"と表現する。
最終的に、 "You are XX." XXの部分に上記で作成した文字列が入る
準備
このチュートリアルは"Hello World" step-by-step チュートリアルからの続きになります。
準備が出来てない場合は、最初の記事から実践して下さい。
乱数の取得
汎用の新規ステートを作成します。
GET_RANDというステート名を与えます。
乱数を保持して、以降のステートで使うため、メンバ変数 "m_val" を定義します。
Rustでのメンバ変数は、宣言と初期化が別々に行う必要があります。
既に用意したテーブルの memberに宣言、member_initに初期化用の式を入力します。
[member]
m_val : i32,
[member_init]
m_val : 0,
乱数関数 rand( a, b )を後から定義することとして、[init]に式を入力します。
[update]
self.m_val = rand(1,10);
分岐の作成
取得した数字で分岐する必要があります。
GET_RANDステートをクリックするとメニューが表示されます。
分岐作成を選択します。
分岐エディタが表示されます。
ダイアログの空欄でクリックしてメニューを表示して、新規の分岐を作成します。
分岐条件は、プログラム式を入力します。
分岐ダイアログをOKで閉じるとステートに分岐ボックスが追加されます。
分岐別の処理
分岐それぞれ用の処理を追加する。
変換
保存と変換ボタンを押し、hoge_control.rsに出力します。
rand関数の実装
rand関数が実装されていなため、このまま実行はできません。
hoge_control.rsをエディタで開き、rand関数を実装します。
ただし、StateGoの挿入部の中に実装すると変換時に削除されます。
挿入マーカ―外で実装します。
※組込関数で実装することも可能ですが、変換結果の挿入部以外で定義できることを習得することを目的とします。
fn rand(a: i32, b: i32) -> i32 {
let mut rng = rand::thread_rng();
let n = b - a;
return a + rng.gen_range(0,n+1);
}
使用するパッケージを指定します。
use rand::Rng;
実行
以下のコマンドを何度か実行して、正しくプログラムされていることを確認してください。
> cargo run
アーカイブ
まとめ
ここでは以下のことが習得できました。
1. メンバ変数の定義と初期化
2. 分岐方法
3. ファイルを変更しての実装方法
以上