1. 変数のスコープとは
スコープとは、プログラム内で変数が有効となる範囲のことを指します。
変数のスコープには、グローバルスコープとローカルスコープの2種類があります。
スコープの概念を理解することで、変数の使用範囲を明確にし、プログラムの可読性と保守性を向上させることができます。
2. グローバルスコープ
グローバルスコープにある変数は、プログラム全体でアクセス可能です。
グローバル変数は、関数やクラスの外で宣言されます。
例
Dart
int globalVar = 10; // グローバル変数
void printGlobalVar() {
print('Global Variable: $globalVar');
}
void main() {
printGlobalVar(); // Global Variable: 10
globalVar = 20; // グローバル変数の変更
printGlobalVar(); // Global Variable: 20
}
3. ローカルスコープ
ローカルスコープにある変数は、特定のブロック内でのみアクセス可能です。
ローカル変数は、関数やブロック内で宣言されます。
例
Dart
void main() {
int localVar = 5; // ローカル変数
print('Local Variable: $localVar');
void innerFunction() {
int innerVar = 10; // 内部関数のローカル変数
print('Inner Variable: $innerVar');
print('Accessing localVar: $localVar'); // 外部関数のローカル変数へのアクセス
}
innerFunction();
// print(innerVar); // エラー: innerVarはinnerFunctionの外ではアクセスできない
}
4. ブロックスコープ
Dartでは、if
文やfor
ループなどのブロック内で宣言された変数もローカルスコープを持ちます。
この変数は、ブロック外からはアクセスできません。
例
Dart
void main() {
int a = 10;
if (a > 5) {
int b = 20; // ifブロック内のローカル変数
print('Inside if block: $b');
}
// print(b); // エラー: bはifブロックの外ではアクセスできない
}
5. 関数スコープとブロックスコープ
Dartでは、関数スコープとブロックスコープがあり、それぞれ異なるスコープルールが適用されます。
関数スコープ
関数内で宣言された変数は、その関数のスコープ内でのみ有効です。
Dart
void main() {
int x = 10;
void myFunction() {
int y = 20; // myFunctionのローカル変数
print('Inside myFunction: $y');
}
myFunction();
// print(y); // エラー: yはmyFunctionの外ではアクセスできない
}
ブロックスコープ
ブロック内で宣言された変数は、そのブロック内でのみ有効です。
Dart
void main() {
for (int i = 0; i < 5; i++) {
print('Loop iteration: $i');
}
// print(i); // エラー: iはforループの外ではアクセスできない
}
6. 例題
例題1: グローバルスコープとローカルスコープ
Dart
int globalCounter = 0; // グローバル変数
void incrementCounter() {
globalCounter++;
}
void main() {
print('Initial Global Counter: $globalCounter'); // 0
incrementCounter();
print('Global Counter after increment: $globalCounter'); // 1
int localCounter = 0; // ローカル変数
void incrementLocalCounter() {
localCounter++;
print('Local Counter inside function: $localCounter');
}
incrementLocalCounter(); // 1
print('Local Counter after increment: $localCounter'); // 1
}
例題2: ブロックスコープ
Dart
void main() {
for (int i = 0; i < 3; i++) {
print('Inside loop: $i');
}
// print(i); // エラー: iはforループの外ではアクセスできない
if (true) {
String message = 'Hello, Dart!';
print(message);
}
// print(message); // エラー: messageはifブロックの外ではアクセスできない
}
↓次回内容:
1. オブジェクト指向プログラミング(OOP)とは
オブジェクト指向プログラミング(OOP)は、プログラムをオブジェクトの集合として構築する方法です。オブジェクトはデータ(プロパティ)とそれに関連する操作(メソッド)を持つエンティティです。OOPの主要な概念には、クラス、オブジェクト、継承、ポリモーフィズムなどがあります。
2. クラスとは
クラスは、オブジェクトの設計図です。クラスは、オブジェクトのプロパティ(データ)とメソッド(関数)を定義します。https://flutter.saloon.jp/dart-08/