プライマリ・コンテンツに移動
Oracle® Big Data Discovery Cloud Service Studioユーザー・ガイド

E65365-05
目次へ
目次
索引へ移動
索引

前
次
機械翻訳について

動的型付けと静的型付け

この項では、動的入力と静的入力の相違点について説明しているため、回復の場合のみ該当します。 動的入力と静的入力の違いを理解することは、変換スクリプト・エラーの処理方法と、Groovyがエラーを処理する方法との違いを理解するために重要です。 また、これは変換スクリプトで作成されたエラーの解釈にも役立ちます。

注意:

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

動的入力と静的入力の違いは主に2つあり、変換スクリプトを記述する場合は注意が必要です。

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

次に、静的型指定言語では、変数を使用する前に変数のデータ型を宣言する必要がありますが、動的に入力される言語では宣言しません。 次の2つのコード例を考えてみます:
// Java example
int num;
num = 5;
// Groovy example
num = 5

どちらの例でも同じことが実行されます: numという変数を作成し、それを5という値に割り当てます。 これらの違いは、Javaの例の1行目にあります。int num;は、numデータ型をintとして定義します。 Javaは静的に型指定されているため、値を割り当てる前に変数を宣言することを期待します。 Groovyは動的に入力され、変数のデータ型が値に基づいて決定されるため、この行は必要ありません。

動的に入力された言語はより柔軟で、スクリプトを作成する際に時間とスペースを節約できます。 ただし、これによって実行時に問題が発生する可能性があります。 次に例を示します。
// Groovy example
number = 5
numbr = (number + 15) / 2  // note the typo

前述のコードでは、5の値を使用して変数numberを作成し、その値を10に変更します。そのためには、15を追加して2で除算します。 ただし、numberでは、2行目の最初のスペルに誤りがあります。 Groovyでは変数を宣言する必要がないため、numbrと呼ばれる新しい変数を作成し、それをnumberが持つ値に割り当てます。 このコードでは正常にコンパイルされますが、その値が10であると想定して、後からスクリプトでnumberの処理を試行する際にエラーが発生することがあります。