スコープとは、特定の変数またはコードにアクセスして使用できる範囲または境界を指します。プログラミングでは、パターン変数は特定のデータ構造と一致するために使用され、その範囲は特定の条件またはステートメントに制限できます。
ユーザーが管理者または通常のユーザーのいずれかになれるシナリオがあるとします。 instanceof 演算子を使用してユーザーのタイプを確認し、ロールに基づいてユーザーの特定のプロパティにアクセスできます。この例では、パターン変数のスコープはユーザーの特定のロールに制限されます:
if (user instanceof Administrator admin) { // Here we can access the properties and methods of the admin user. admin.addNewUser(); } else if (user instanceof RegularUser regUser) { // Here we can only access the properties and methods of a regular user. regUser.editProfile(); }
上記のコードでは、パターン変数 admin のスコープは、instanceof 条件が true である if ステートメントに制限されています。これは、そのステートメント内の管理ユーザーのプロパティとメソッドにのみアクセスできることを意味します。
同様に、パターン変数のスコープは、それが導入されたステートメントを超えて拡張できます。与えられた形状が長方形であるかどうか、そしてそれが十分な大きさであるかどうかをチェックする関数があるとします。この場合、パターン変数 r のスコープは、それが導入された if ステートメントを超えて拡張されます。
public static boolean bigEnoughRect(Shape s) { if (!(s instanceof Rectangle r)) { // Here the pattern variable 'r' cannot be used as the instance of Rectangle is false. return false; } // However, we can access the properties and methods of the rectangle 'r' here. return r.length() > 5; }
パターン変数は if ステートメントの式でも使用できます。これにより、条件文が true の場合にのみパターン変数にアクセスできるようになります。次の例では、パターン変数 r を使用して、条件付き AND 演算子を使用して四角形の長さが 5 より大きいかどうかを確認します。
if (shape instanceof Rectangle r && r.length() > 5) { // Here we can use the pattern variable 'r' to access the properties of a rectangle only if the instance of Rectangle is true. System.out.println("This rectangle is big enough!"); }
ただし、instanceof 演算子は、異なるタイプのスコープをチェックするため、パターン一致の条件文で使用できません。次の例では、instanceof Rectangle が false の場合、パターン変数 r のスコープにアクセスできないため、プログラムはエラーをスローします。
if (shape instanceof Rectangle r || r.length() > 0) { // error // Here we cannot use the pattern variable 'r' as it may or may not exist depending on the instance of Rectangle. System.out.println("This is a rectangle with a length greater than 0"); }
結論として、パターン変数のスコープは、コード内のどこでアクセスして使用できるかを決定する上で不可欠です。その範囲を理解することで、パターン変数を効率的に使用してデータ構造を照合し、効率的でエラーのないコードを書くことができます。
以上がJava のパターン変数のスコープを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。