HYPER MIKAN BOX
検索
最近の変更
メディアマネージャー
サイトマップ
文書の表示
以前のリビジョン
バックリンク
ログイン
トレース:
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== 変数と定数 ====== [[odin:|{{:odin:odin_logo.svg?200|Odin}}]] 数値や文字列といった値に名前を付けるには、変数、あるいは定数を利用します。変数はミュータブルで、後で変更することができます。イミュータブルな変数はサポートされていません。定数はコンパイル時に評価される値であるという点で、変数とは異なります。定数は後から変更することはできません。 ====== 変数 ====== 変数を使用するには、まずその変数を宣言する必要があります。 <file odin> x: int </file> これでint型の値を保持することが出来る''x''という名前の変数が使えるようになります。上のように初期値を指定しなかった場合、0で初期化されます。 <file odin> x: int assert(x == 0) </file> 宣言と同時に初期値を与えることもできます。 <file odin> x: int = 99 assert(x == 99) </file> このようなパターンは頻出するので、簡潔な書き方が用意されています。次のコードは上のコードと同等です。 <file odin> x := 99 assert(x == 99) </file> ''x''の型は明示されていませんが、右辺の値の型から導出されます。 '':''と''=''は個別のトークンであり、くっついていなくてもほぼ同じ意味になります。 <file odin> x1 : = 99 x2 : int = 99 assert(x1 == 99) assert(x2 == 99) </file> 同じ型の複数の変数をまとめて宣言することができます。 <file odin> x1, x2: int assert(x1 == 0) assert(x2 == 0) </file> 初期値を与えることもできます。 <file odin> x1, x2: int = 100, 200 assert(x1 == 100) assert(x2 == 200) </file> 一つの変数を宣言する場合と同様に、型名は省略できます。 <file odin> x1, x2 := 100, 200 assert(x1 == 100) assert(x2 == 200) </file> 型名を省略する場合は、異なる型の変数を宣言できます。 <file odin> x1, x2 := 100, "hello" assert(x1 == 100) assert(x2 == "hello") </file> 型を明示する場合は、異なる型の変数をまとめて宣言することができません。次のように書くことはできません。 <file odin> x1, x2 : int, string = 100, "hello" // コンパイルエラー! </file> この点において、型名を省略した書き方のほうが明示的に書くよりも柔軟性があると言えます。 変数の宣言と同時に初期値を与えるケースは多くあり、また、その変数の型は初期値から明らかな場合が多いです。そのため、型名を省略した書き方を用いる場合のほうが多くなることが多くなります。明示的に型名を書くのは、そうすることによって意図が明らかになり、コードが読みやすくなる場合に限られてくることになります。 ====== 定数 ====== プログラム全体を通して変わらない値に名前を付ける場合は、変数よりも定数とする方が適しています。定数は宣言時に値を設定する必要があり、設定された値を後で変更することができません。 定数の宣言は次のようになります。 <file odin> THE_ANSWER : int : 42 </file> 変数の場合と同じように、型名は省略することができます。 <file odin> THE_ANSWER :: 42 </file> 定数の値はコンパイル時に評価できる値でなければなりません。したがって、次のコードはコンパイルされません。 <file odin> circumference := 6.28318530717958647692 radius := 1.0 PI :: circumference / (2.0 * radius) // コンパイルエラー! </file> PIの値に計算が含まれていることが原因ではありません。''circumference''と''radius''は変数であり、コンパイル時には値が定まらないため、それに依存して定数を宣言することはできないからです。 一方、次のコードは正しいです。 <file odin> TAU :: 6.28318530717958647692 PI :: TAU / 2.0 </file> 先の例と同様にPIの値に計算が含まれていますが、そこに含まれるすべての値(''TAU''と''2.0'')がコンパイル時に評価可能であるため、PIの値もコンパイル時に評価可能です。よって、正しくコンパイルされます。
文書の先頭へ