メインコンテンツまでスキップ

関数と変数

紹介

Waveプログラミング言語の核心設計哲学は、低レベルの性能と高レベルの抽象化のバランスを維持しながら、効率的で柔軟なソフトウェア開発環境を提供することです。 このセクションでは、Waveプログラムを構成する最も基本的な要素である関数と変数を紹介します。

関数はプログラムの動作と論理を構成する核心の単位であり、変数はその過程で必要なデータを保存し管理する役割を果たします。 関数と変数を定義し使用する方法を正確に理解することで、Wave言語の構造と設計意図を深く活用することができます。


関数

Waveでの関数は独立して実行できる再利用可能なコードブロックです。 特定の動作や計算を一つの単位としてまとめて表現することができ、プログラム全体で必要なときにいつでも呼び出せます。

関数を使用すると繰り返しのコードを減らすことができ、プログラムを論理的に分離して可読性とメンテナンス性を高めることができます。 また、計算処理、入出力管理、ロジック分離といった様々な目的に活用されます。

Waveでの関数はfunキーワードで定義され、関数名とパラメーターリスト、そして中括弧{}で囲まれた関数本体で構成されます。

関数を定義する

Waveにおける最も基本的な関数定義の形は次の通りです。

fun main() {
// ここにコードを記述します
}

main関数はプログラムの実行開始点であり、Waveプログラムには必ず一つのmain関数が存在しなければなりません。 プログラムはこの関数から実行を開始します。

関数は必要に応じてパラメーターを持つことができ、計算結果や値を呼び出したところへ返すこともできます。 戻り値がある場合は、関数宣言部で戻り型を明示します。

例: 簡単な関数

次の例は、二つの整数を受け取りその合計を返す簡単な関数です。

fun add(a :i32, b :i32) -> i32 {
return a + b;
}

fun main() {
var result = add(5, 7); // add関数呼び出し
println(result); // 出力: 12
}

この例でadd関数は二つの整数型パラメーターabを受け取り、それを加算した結果を返します。 main関数ではadd関数を呼び出し、返された値を変数に保存した後出力します。

このように関数は特定の動作をカプセル化し、プログラムの複数の部分で再利用できるようにします。

変数

変数はプログラム内でデータを保存し、操作するために使用されます。 Waveは変数宣言時に可変変数と不変変数を明確に区別し、データ変更に関する意図をコードレベルで明らかにできるように設計されています。

これによりプログラムの状態変化がより明確になり、意図しない値変更によるエラーを減らすことができます。

可変変数

Waveにおける変数は基本的に可変(mutable)です。 つまり、一度宣言された後でもプログラム実行中に値を変更できます。

可変変数はvarキーワードを使用して宣言します。

var x :i32 = 10;
x = 20;

上記のコードでxは初期値として10を持ち、その後20に値を変更できます。 このように状態が変わる必要があるデータには可変変数を使用します。

不変変数

変数を不変(immutable)として宣言すると、初期値が割り当てられた後はその値を変更できません。 不変変数はletキーワードを使用して宣言します。

let y :i32 = 5;
// y = 10; // エラー: 不変変数は値を変更できません。

不変変数は値が変更されないことを保証するため、プログラムの安定性と予測可能性を高めるのに役立ちます。 値変更が不要な定数データには不変変数を使用することが推奨されます。

Waveではletキーワードと共にmutを使用して、明示的に可変性を許可することもできます。

let mut y :i32 = 5;
y = 10;

場合、変数は let で宣言されていますが、mut キーワードを使用して値の変更が許可されています。

変数宣言の例

次は様々なタイプの可変および不変変数を宣言する例です。

var x :i32 = 10;
let y :f64 = 3.14159;
var name :str = "Wave";
let is_active :bool = true;

この例では、xname は可変変数であり、yis_active は不変変数です。 Waveでは、varlet を明確に区別することで、データが変更可能かどうかをコードの次元で示します。

可変変数と不変変数を適切に区別して使用すれば、データの一貫性を保ちながら、より堅固で予測可能なプログラムを作成することができます。