2009-04-30 10 views

答えて

0

言語'1' + 3は、文字列を整数に追加するため、無効です。

3

言語変数は、特定の種類のデータを含むように宣言する必要がある言語です。

あなたの変数の宣言は次のようになり場合:

String myString = "Fred"; 

その後、あなたの言語は、厳密に型指定された、変数「のmyString」ですが、明示的に文字列データのみを含むように宣言されています。以下の作品の場合

x = 10; 
x = "Fred"; 

それが緩く型付けされます(同じ変数とスコープ内のデータの二つの異なるタイプ)。

+4

強タイピングではなく静的タイピングについて説明しています。 Pythonは型を宣言することなくvarを許可しますが、型はあります。 x = "Fred"は文字列ですが、たとえ 'string x =" Fred "' – hasen

+0

ohと言っていなくてももちろんですが、pythonは強く型付けされています。 – hasen

10

厳密に型指定された言語は、やり取りされるすべてのデータにタイピングを強制します。

int i = 3 
string s = "4" 

例えば

ここから上のあなたは私を使用するたびに、あなただけの整数型としてそれと対話することができます。これは、整数で動作するメソッドでの使用に限定されていることを意味します。

文字列sについては、文字列型としてのみ対話できます。他の文字列と連結して印刷することもできますが、文字 "4"が含まれていても、文字列を整数型に変換する関数を使用せずに整数に追加することはできません。動的型付け言語で

、あなたはより多くの柔軟性を持っている:

i = 3 
s = "4" 

タイプを推測しています。それらが設定されているデータに基づいて決定されることを意味します。私はしっかりと数値型で、sは設定された方法に基づいて文字列型です。しかし、あなたがi + sを持っているとき。型推論が使用され、環境に応じて結果i + s = 7を得ることができます。 sは暗黙的にプログラミング環境によってintに変換されたからです。ただし、この操作では、環境がint +文字列を推定する場合に連結演算と加算演算を同じにする必要がある場合は、文字列 "34"が返されます。

この柔軟性により、疎結合型言語が非常に普及しました。しかし、これらの型推論は予期しない結果を生じることがあるため、注意しないと、コードにバグが多くなることもあります。型付き言語では、私がi + sを実行すると、コンパイラによってintが最初にintに変更されることが強制されます。したがって、iをsに追加すると、sを明示的intに変換する必要があるため、最初。動的言語では、暗黙のうちにこれを実行しようとしますが、何かがiまたはsにある可能性があるため、結果は期待していたものと異なる場合があります。文字列、数字、さらにはオブジェクトであってもよい。コードを実行して何が起こるかを見るまで、あなたはわかりません。

+0

型推論と厳密な型指定は互いに排他的です。 Haskellは両方を採用しています。 –

3

あり反対の意見を約強いまたは弱い、様々なタイプのシステムがどのように、私は一般的に「厳密に型指定されたプログラミング言語は」非常にstrongly typed programming languageを意味するように聞きました。これはしばしば、いくつかの関数型言語で見られる静的型システムを記述します。

3

"strict typing"を検索しようとしましたが、その用語の確定的な定義を見つけることができませんでした。おそらくそれは強く型付けされた言語を指しているでしょうか?

Strong typingは、異なるタイプの2つの変数を実行できる操作に制限があるtype systemを指します。たとえば、非常に厳密に型指定された言語では、stringnumberを追加しようとするとエラーが発生する可能性があります。

string s; 
number n; 
s + n;   <-- Type error. 

エラーがstatically typed languagesまたはdynamically typed languagesための実行時に、コンパイル時に発生し得ます。静的/動的および強/弱は同様の概念のように聞こえるかもしれないが、それらは全く異なることに注意すべきである。

あまり強く型付けされた言語では、変数のキャストは、異なる種類から発信変数間の操作を許可することを可能にする:弱い型付けされた言語で

s + (string)n; <-- Allowed, as (number) has been explicitly 
        casted to (string), so variable types match. 

は、異なるタイプの変数は自動的に互換性のある型にキャストなることがあります。

s + n;   <-- Allowed, where the language will cast 
        the (number) to (string) 

おそらく、「厳密に型指定された言語は、」操作は、異なるタイプの変数に実行することができる方法として、より厳しい制限がされた非常に強く型付けされた言語を指します。

関連する問題