厳密に型指定された言語とは何ですか?厳密に型指定された言語とは何ですか?
答えて
言語'1' + 3
は、文字列を整数に追加するため、無効です。
言語変数は、特定の種類のデータを含むように宣言する必要がある言語です。
あなたの変数の宣言は次のようになり場合:
String myString = "Fred";
その後、あなたの言語は、厳密に型指定された、変数「のmyString」ですが、明示的に文字列データのみを含むように宣言されています。以下の作品の場合
:
x = 10;
x = "Fred";
それが緩く型付けされます(同じ変数とスコープ内のデータの二つの異なるタイプ)。
厳密に型指定された言語は、やり取りされるすべてのデータにタイピングを強制します。
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にある可能性があるため、結果は期待していたものと異なる場合があります。文字列、数字、さらにはオブジェクトであってもよい。コードを実行して何が起こるかを見るまで、あなたはわかりません。
型推論と厳密な型指定は互いに排他的です。 Haskellは両方を採用しています。 –
あり反対の意見を約強いまたは弱い、様々なタイプのシステムがどのように、私は一般的に「厳密に型指定されたプログラミング言語は」非常にstrongly typed programming languageを意味するように聞きました。これはしばしば、いくつかの関数型言語で見られる静的型システムを記述します。
"strict typing"を検索しようとしましたが、その用語の確定的な定義を見つけることができませんでした。おそらくそれは強く型付けされた言語を指しているでしょうか?
Strong typingは、異なるタイプの2つの変数を実行できる操作に制限があるtype systemを指します。たとえば、非常に厳密に型指定された言語では、string
とnumber
を追加しようとするとエラーが発生する可能性があります。
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)
おそらく、「厳密に型指定された言語は、」操作は、異なるタイプの変数に実行することができる方法として、より厳しい制限がされた非常に強く型付けされた言語を指します。
- 1. CurrentPage.Idの厳密に型指定されたバージョンとは何ですか?
- 2. 高速、コンパクト、ストリーミング、多言語、厳密に型指定されたシリアライズフォーマット
- 3. 厳密に型指定されたリポジトリの戻り値の型
- 4. MVC 3と厳密に型指定されたビュー
- 5. クリスタルレポートのデータソースとして厳密に型指定されたデータセット
- 6. Telerik UI Radgrid厳密に型指定されたGridTemplateColumnの問題
- 7. 厳密に型指定されたデータセットのシリアル化
- 8. Entity Frameworkを持つ、厳密に型指定されたASP.NET MVC
- 9. asp.net mvcの厳密に型指定されたURL
- 10. 厳密に型指定されたFaultExceptionsが機能しない
- 11. 厳密に型指定されたデータセットの問題
- 12. 厳密に型指定されたビューのエラー
- 13. MonadFix厳密な言語で
- 14. 厳密に型指定されたビューでリストボックスを作成しますか?
- 15. 厳密に型指定された言語によるドメイン駆動型設計でHTTP PATCHを実行するにはどうすればよいですか?
- 16. 厳密に型付けされているか否定型か厳密に型付けされているか
- 17. 厳密に制限されたインタプリタ言語での作業
- 18. 言語の厳密なスーパーセットで書かれたプログラムは多言語としてカウントされますか?
- 19. Pythonに厳密に型指定されたcsvリーダーがありますか?
- 20. .Net/C#では、厳密に型指定されていますか?
- 21. MVCで厳密に型指定されたデータにアクセスする方法
- 22. Spark Datasets - 厳密な型指定
- 23. MVC3ヘルパーから厳密に型指定されたモデルを取得する
- 24. VB.Netプロジェクトで厳密に型指定されたデータセットを使用する
- 25. クエリを実行するときにデータベースや言語プラットフォームが厳密に型指定されたクラスを返さないのはなぜですか?
- 26. Jqueryで厳密に型指定されたASP.Net MVCモデル値にアクセス
- 27. DataTableを厳密に型指定されたオブジェクトのリストに変換する
- 28. Automapper - NameValueCollectionを厳密に型指定されたコレクションに変換する
- 29. LINQ to Entitiesの厳密に型指定されたオブジェクトを初期化する
- 30. 自動生成する、厳密に型指定されたのAppSettingsクラス
強タイピングではなく静的タイピングについて説明しています。 Pythonは型を宣言することなくvarを許可しますが、型はあります。 x = "Fred"は文字列ですが、たとえ 'string x =" Fred "' – hasen
ohと言っていなくてももちろんですが、pythonは強く型付けされています。 – hasen