SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

フロントエンジニアのためのTauri 2.0ではじめるRustプログラミング

デスクトップアプリ開発に必要な「Rust」の文法を理解しよう

フロントエンジニアのための「Tauri 2.0」ではじめるRustプログラミング 第2回

  • X ポスト
  • このエントリーをはてなブックマークに追加

制御構文

 「制御構文」とは上から下に順番に実行されるプログラムの流れを変える働きをする構文です。制御構文には大きく分けて「分岐構文」と「繰り返し構文」があります。

 分岐構文は、もし条件が満たされたり満たされなかったりした場合だけ処理を実行する構文です。その名の通り「if」文と言います。

 繰り返し構文には範囲内の値をループする「for」文と、条件が満たされる間ループする「while」文があります。解説はしませんが他にも繰り返し構文に「loop」文がありますが、知っていて損はないですが、あまり使わないかもしれません。

分岐構文if文

 「if 条件」の条件が満たされた場合、直後のスコープ内の処理が実行されます。満たされなかった場合「else if 条件」の条件が満たされた場合、直後のスコープ内の処理が実行されます。それも満たさなかった場合「else」直後のスコープ内の処理が実行されます。

if文の文法

if 条件 {

 ステートメント

} else if 条件 {

 ステートメント

} else {

 ステートメント

}

サンプルコード:「tauri2_if」→「src」→「main.rs」
fn main() {
  let i = 0;
  if i < 0 {
    println!("iは0より小さい");
  } else if i == 0 {
    println!("iは0");
  } else {
    println!("iは0より大きい")
  }
}

繰り返し構文for文

 「for 変数 in 範囲」で範囲の各値が変数に代入されて直後のスコープ内の処理を繰り返し実行します。範囲は「0..10」と書けば0〜10未満まで1ずつインクリメントされます。範囲に配列を書けば配列の全ての要素が繰り返されます。範囲を超えたらループを抜け出します。

for文の文法

for 変数 in 範囲 {

 ステートメント

}

サンプルコード:「tauri2_for」→「src」→「main.rs」
fn main() {
  for i in 0..10 {
    println!("i={}",i);
  }
}

繰り返し構文while文

 「while 条件」の条件が満たされている間、直後のスコープ内の処理を繰り返し実行します。条件が満たされなくなったらループを抜け出します。

while文の文法

while 条件 {

 ステートメント

}

サンプルコード:「tauri2_while」→「src」→「main.rs」
fn main() {
  let mut sum = 0; // 後で値が変更されるので「mut」を付ける
  while sum < 1000 {
    sum += 100;
    println!("合計は{}円",sum);
  }
}

パターンマッチングmatch文

 一般のプログラミング言語でいう「switch」文に似た文法がmatch文です。「match 変数」の変数に当てはまるものを、直後のスコープ内から探して分岐します。当てはまるものがない場合「_」に分岐します。

match文の文法

match 変数 {

 値1 => { ステートメント },

 値2 => { ステートメント },

 _ => { ステートメント }

}

サンプルコード:「tauri2_match」→「src」→「main.rs」 
fn main() {
  let s = "マッチ";
  match s {
    "パターン" => { println!("パターン"); },
    "マッチ" => { println!("マッチ"); },
    _ => { println!("それら以外") }
  }
}

構造体とプロパティとメソッド

 一般のプログラミング言語はオブジェクト指向に「クラス(class)」を使いますが、Rustでは「構造体(struct)」を使います。「struct 構造体名」のスコープ内に「プロパティ(構造体に属する変数)」を書きます。

 「impl 構造体名」のスコープ内に「メソッド(構造体に属する関数)」を書きます。「new」メソッドは所謂「コンストラクタ」でインスタンスを生成する際に呼び出します。

 他にもプログラミング言語「Java」の「interface」に似た「トレイト」という機能もありますが、本連載では使わないので省略します。

構造体の文法

struct 構造体名 {

 プロパティ: データ型,

 プロパティ: データ型,

}

impl 構造体名 {

 fn new(引数:データ型) -> Self {

  構造体名 {

   プロパティ: 値,

   プロパティ: 値

  }

 }

 fn メソッド名(self,引数:データ型) -> 戻り値 {

  ステートメント

  戻り値

 }

}

サンプルコード:「tauri2_struct」→「src」→「main.rs」 
struct Car {
  speed: i32,
  max: i32,
}
impl Car {
  fn new(spd: i32,mx: i32) -> Self {
    Car {
      speed: spd,
      max: mx
    }
  }
  fn get_speed(mut self) -> i32 { // 後で値が変更されるので「mut」を付ける
    if self.speed > self.max {
        self.speed = self.max;
    }
    self.speed
  }
}
fn main() {
  let car = Car::new(140,100);
  println!("スピード{}km/h",car.get_speed());
}

次のページ
所有権について

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
フロントエンジニアのためのTauri 2.0ではじめるRustプログラミング連載記事一覧
この記事の著者

大西 武(オオニシ タケシ)

 1975年香川県生まれ。大阪大学経済学部経営学科中退。プログラミング入門書などを30冊以上商業出版する作家。ドコモでグランプリなどコンテストに20回以上入賞するアーティスト。オリジナルの間違い探し「3Dクイズ」がTVで約10回出題。プロフィールサイト:https://profile.vixar.jp

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/20608 2024/12/25 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング