差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン | |||
tutorial:odin:variables_and_constants [2024/08/20 02:02] – ↷ tutorial:odin:variables から tutorial:odin:variables_and_constants へページを名称変更しました。 freemikan | tutorial:odin:variables_and_constants [2025/05/20 02:04] (現在) – 削除 freemikan | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== 変数と定数 ====== | ||
- | 数値や文字列といった値に名前を付けるには、変数、あるいは定数を利用します。変数はミュータブルで、後で変更することができます。イミュータブルな変数はサポートされていません。定数はコンパイル時に評価される値であるという点で、変数とは異なります。定数は後から変更することはできません。 | ||
- | |||
- | ====== 変数 ====== | ||
- | |||
- | 変数を使用するには、まずその変数を宣言する必要があります。 | ||
- | |||
- | <file odin> | ||
- | x: int | ||
- | </ | ||
- | |||
- | これでint型の値を保持することが出来る'' | ||
- | |||
- | <file odin> | ||
- | x: int | ||
- | assert(x == 0) | ||
- | </ | ||
- | |||
- | 宣言と同時に初期値を与えることもできます。 | ||
- | |||
- | <file odin> | ||
- | x: int = 99 | ||
- | assert(x == 99) | ||
- | </ | ||
- | |||
- | このようなパターンは頻出するので、簡潔な書き方が用意されています。次のコードは上のコードと同等です。 | ||
- | |||
- | <file odin> | ||
- | x := 99 | ||
- | assert(x == 99) | ||
- | </ | ||
- | |||
- | '' | ||
- | |||
- | '':'' | ||
- | |||
- | <file odin> | ||
- | x1 : = 99 | ||
- | x2 : int = 99 | ||
- | assert(x1 == 99) | ||
- | assert(x2 == 99) | ||
- | </ | ||
- | |||
- | 同じ型の複数の変数をまとめて宣言することができます。 | ||
- | |||
- | <file odin> | ||
- | x1, x2: int | ||
- | assert(x1 == 0) | ||
- | assert(x2 == 0) | ||
- | </ | ||
- | |||
- | 初期値を与えることもできます。 | ||
- | |||
- | <file odin> | ||
- | x1, x2: int = 100, 200 | ||
- | assert(x1 == 100) | ||
- | assert(x2 == 200) | ||
- | </ | ||
- | |||
- | 一つの変数を宣言する場合と同様に、型名は省略できます。 | ||
- | |||
- | <file odin> | ||
- | x1, x2 := 100, 200 | ||
- | assert(x1 == 100) | ||
- | assert(x2 == 200) | ||
- | </ | ||
- | |||
- | 型名を省略する場合は、異なる型の変数を宣言できます。 | ||
- | |||
- | <file odin> | ||
- | x1, x2 := 100, " | ||
- | assert(x1 == 100) | ||
- | assert(x2 == " | ||
- | </ | ||
- | |||
- | 型を明示する場合は、異なる型の変数をまとめて宣言することができません。次のように書くことはできません。 | ||
- | |||
- | <file odin> | ||
- | x1, x2 : int, string = 100, " | ||
- | </ | ||
- | |||
- | この点において、型名を省略した書き方のほうが明示的に書くよりも柔軟性があると言えます。 | ||
- | |||
- | 変数の宣言と同時に初期値を与えるケースは多くあり、また、その変数の型は初期値から明らかな場合が多いです。そのため、型名を省略した書き方を用いる場合のほうが多くなることが多くなります。明示的に型名を書くのは、そうすることによって意図が明らかになり、コードが読みやすくなる場合に限られてくることになります。 | ||
- | |||
- | ====== 定数 ====== | ||
- | |||
- | プログラム全体を通して変わらない値に名前を付ける場合は、変数よりも定数とする方が適しています。定数は宣言時に値を設定する必要があり、設定された値を後で変更することができません。 | ||
- | |||
- | 定数の宣言は次のようになります。 | ||
- | |||
- | <file odin> | ||
- | THE_ANSWER : int : 42 | ||
- | </ | ||
- | |||
- | 変数の場合と同じように、型名は省略することができます。 | ||
- | |||
- | <file odin> | ||
- | THE_ANSWER :: 42 | ||
- | </ | ||
- | |||
- | 定数の値はコンパイル時に評価できる値でなければなりません。したがって、次のコードはコンパイルされません。 | ||
- | |||
- | <file odin> | ||
- | circumference := 6.28318530717958647692 | ||
- | radius := 1.0 | ||
- | PI :: circumference / (2.0 * radius) // コンパイルエラー! | ||
- | </ | ||
- | |||
- | PIの値に計算が含まれていることが原因ではありません。'' | ||
- | |||
- | 一方、次のコードは正しいです。 | ||
- | |||
- | <file odin> | ||
- | TAU :: 6.28318530717958647692 | ||
- | PI :: TAU / 2.0 | ||
- | </ | ||
- | |||
- | 先の例と同様にPIの値に計算が含まれていますが、そこに含まれるすべての値('' |