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)」や「メモリ管理」に関する内容を掘り下げていきます。