動的型付けと静的型付け

このトピックは参照用としてのみ用意されており、動的型付けと静的型付けの違いについて説明します。動的型付けと静的型付けの違いについて理解することは、変換スクリプトのエラーの処理方法や、Groovyでのエラーの処理方法との違いについて理解する上で重要です。これはまた、変換スクリプトで発生したエラーを解釈する上でも役に立ちます。

注意: Big Data Discovery内のGroovy実装では静的型付けが強制されることを理解することが重要です。Groovyの動的型付け動作をオーバーライドする静的パーサーを使用する「変換」での例外処理の詳細は、「例外処理およびスクリプトのトラブルシューティング」を参照してください。

変換スクリプトを作成する際に注意すべき動的型付けと静的型付けの違いは主に2つあります。

最初に、動的型付け言語では、型チェックが実行時に行われるのに対し、静的型付け言語では、型チェックがコンパイル時に行われます。つまり、動的型付け言語(Groovyなど)で作成されたスクリプトは、スクリプトが正しく動作することを妨げるエラー(存在する場合)が含まれていても、コンパイルできます。静的型付け言語(Javaなど)で作成されたスクリプトにエラーが含まれる場合、エラーが修正されるまではコンパイルが失敗します。

2番目に、静的型付け言語では、変数を使用する前に変数のデータ型を宣言する必要があるのに対し、動的型付け言語ではそのような宣言は必要ありません。次の2つのコード例を検討してください。
// Java example
int num;
num = 5;
// Groovy example
num = 5

どちらの例でも、同じ処理を実行しています。つまり、numと呼ばれる変数を作成し、これに値5を割り当てています。この違いは、Java例の最初の行であるint num;にあります。ここでは、numのデータ型をintとして定義しています。Javaは静的に型付けされるため、変数を宣言してから変数に値を割り当てることを想定しています。Groovyは動的に型付けされ、変数のデータ型をその値に基づいて決定するため、この行は必要ありません。

動的型付け言語の方が柔軟性が高く、スクリプトの作成時に時間とスペースを節約できます。ただし、この場合、実行時に問題が発生する可能性があります。次に例を示します。
// Groovy example
number = 5
numbr = (number + 15) / 2  // note the typo

このコードの場合、値5を持つ変数numberを作成し、この値に15を加算してから2で除算することにより、この値を10に変更しています。しかし、2番目の行の先頭でnumberのスペルが間違っています。Groovyでは変数を宣言する必要がないため、numbrと呼ばれる新しい変数が作成され、numberが持つはずだった値がこの変数に割り当てられます。このコードは正常にコンパイルされますが、値が10であると想定されるnumberを使用して何らかの処理をスクリプトで実行しようとするときにエラーが発生する可能性があります。