Carbon言語入門 第2回:基本構文と制御構造
はじめに
前回の記事では、Carbon言語をセットアップし、簡単な「Hello, World!」プログラムを実行する方法を紹介しました。本記事では、Carbonの基本的な構文や制御構造(条件分岐、ループ)について詳しく解説します。C++と比較しながら、その特徴や違いを理解していきましょう。
1. 変数とデータ型
Carbonでは、変数を定義する際にvar
またはlet
を使用します。
var
:変更可能な変数let
:変更不可な定数
変数の宣言と代入
fn Main() -> i32 { var mutable_var: i32 = 10; let immutable_var: i32 = 20; mutable_var = 30; // OK // immutable_var = 40; // エラー: immutable_varは変更不可 return 0; }
ポイント
- var
を使った変数は値の変更が可能
- let
を使った変数は値を変更できない(定数扱い)
- 型推論も可能(i32
を省略可)
2. 制御構造
Carbonには、一般的な条件分岐やループ構造が用意されています。
2.1 条件分岐(if, else)
fn Main() -> i32 { let x: i32 = 10; if x > 5 { Print("xは5より大きい"); } else if x == 5 { Print("xは5と等しい"); } else { Print("xは5より小さい"); } return 0; }
特徴
- if
の条件式は()
不要
- else if
も使用可能
- Print()
を使って標準出力へ表示
2.2 ループ(for, while)
for
ループ
Carbonのfor
ループは、C++と同様に動作します。
fn Main() -> i32 { for (var i: i32 = 0; i < 5; i += 1) { Print("ループ回数: {i}"); } return 0; }
特徴
- C++スタイルのfor
文をサポート
- var i: i32
でカウンタ変数を宣言
- i += 1
でカウンタを増加
while
ループ
fn Main() -> i32 { var count: i32 = 0; while count < 3 { Print("count: {count}"); count += 1; } return 0; }
特徴
- while
の条件式は()
不要
- ループ内で変数を更新
3. 関数の定義と呼び出し
Carbonの関数はfn
キーワードを使用して定義します。
fn Add(a: i32, b: i32) -> i32 { return a + b; } fn Main() -> i32 { let result: i32 = Add(10, 20); Print("計算結果: {result}"); return 0; }
特徴
- fn
キーワードで関数を定義
- 引数と戻り値の型を指定(a: i32, b: i32 -> i32
)
- return
キーワードで値を返す
4. まとめ
本記事では、Carbon言語の基本的な構文として、変数、制御構造(条件分岐、ループ)、関数の定義方法について解説しました。C++に似た書き方をしつつも、モダンな構文が取り入れられており、可読性と安全性が向上していることがわかります。
次回は、Carbonの「構造体(struct)」や「メモリ管理」に関する内容を掘り下げていきます。