変数
すべてのプログラミング言語において、変数は値や参照を保存するために使用されます。たとえば、「現在のスコア」や「インベントリ内のアイテムへの参照」が該当します。
変数にはわかりやすい名前を付けることが推奨されます。名前は小文字で記述し、単語はアンダースコアでつなぎます。以下は変数宣言の例です:
var score = 0var remaining_fuel = 99.9var paused = falsevar player_name = ""var selected_weaponvar starting_grid_position
一部の変数はまだ値が設定されておらず、異なる型の値を代入することができます。
基本的なデータ型
型 | 説明 | 例 |
---|---|---|
int | 64ビット符号付き整数 | -12, 54, 0xAF |
float | 浮動小数点数 | 1.23, 1e6 |
bool | 真偽値 | true, false |
String | 文字列または文字の並び | "Hello World" |
バリアント型
最初の例では、変数には任意の型の値を代入でき、後で別の型の値に変更することも可能です。このような変数は「バリアント(Variant)」と呼ばれます。
この方法では、変数の宣言を迅速かつ簡単にコーディングできます。
型付き変数
変数が受け入れる値の型を宣言する方法もあります。この方法には、バグを減らし、コードを入力する際にエディタから支援や警告を受けるという利点があります。
型付き変数を宣言する方法は次の2つです:
# 方法1var score: int = 0var remaining_fuel: float = 99.9var paused: bool = falsevar player_name: String = ""
# 方法2(型の推論を使用)var my_int := 8var size := 32.6var running := truevar name := ""
この方法を「静的型付け(Static Typing)」と呼びます。一方で、前述のバリアント型を使用する方法は「動的型付け(Dynamic Typing)」と呼びます。プログラム内で両方を好きなように組み合わせて使用できます。
変数のスコープ
スコープとは、変数にアクセス可能なプログラムコードの範囲を指します。エディタではテキストのインデントレベルによってスコープが定義され、これらの領域は折りたたんだり展開したりできます。
グローバルスコープでは、変数がすべての場所で利用可能です(例: Autoloadファイルで宣言された場合)。一方、ローカルスコープは、変数の宣言後にその関数内でのみ使用可能です。
変数のスコープをできるだけ小さく保つことは、バグを減らし、外部変数に依存しない自己完結型の機能を作成するのに役立ちます。
以下は、グローバルスコープとローカルスコープの例です:
extends Node2D
# scoreはこのコードモジュール全体で使用可能(グローバルスコープ)var score = 5
# スコアにポイントを加えるための関数func add_to_score(points): # pointsは外部から渡されるローカルスコープの変数 score = score + points
# シーンが実行される際に呼び出される関数func _ready(): add_to_score(1) # scoreはこのコードブロック内でもアクセス可能 print(score) # 6を出力
グローバルスコープを多用し、ローカルスコープで誤って同じ名前の変数を再宣言してしまうと、バグが発生する可能性があります。以下はその例です:
extends Node2D
var score = 5var new_score
func add_to_score(points): # new_scoreをローカルスコープで誤って再宣言 var new_score = score + points
func _ready(): add_to_score(1) # new_scoreは設定されていない print(new_score) # nullを出力
練習
静的型付けと動的型付けの両方の変数を宣言してみましょう。それぞれの値を出力し、スコープに関連する概念を実験して理解を深めてください。