私はかなりジュニアレベルの開発者(初年度のCS学生)です。静的型付き言語と動的型付き言語の違いについて学習しています。私が間違っていると私を訂正しますが、動的に型指定された言語はプログラマが型を与えずに変数を初期化し、後でその型をプログラムの中に与えることができます。好奇心のために、新しい変数を初期化せずにオブジェクトのタイプ/クラスを変更できる言語はありますか?変数の型を変更できる言語はありますか?
答えて
あなたが探しているものはweak typingだと思います。弱いタイピングと強いタイピングは静的タイピングと動的タイピングと同じではないことに注意してください。
すべては、新しい変数と呼ばれるものに依存します。たとえば、PHPの場合:
<?php
$var = NULL; // $var is now of type null
$var = 1; // $var is now of type integer
?>
などです。しかし、以前はNULL値を格納するために以前に使用されていたスペースが1を格納するために使用されているという保証はないので、あなたは同じ名前のまったく新しい変数を持っていると言うことができます。
タイプの定義方法によって異なりますが、JavasScriptには「クラス」がなく、インタフェースをオブジェクトに簡単に変更できます。
typeof dog // Dog
cat = dog.turnIntoCat()
typeof cat // Cat
と私:
はtypeof dog // Dog
dog.turnIntoCat()
typeof dog // Cat
は、しかし、ほとんどすべてのオブジェクト指向言語のようなものをサポートしています。私はあなたのような何かをすることを可能にする強力なオブジェクト指向の基礎と任意の言語を知らない
すべての動的に型指定された言語(私が知っているすべてのもの)がこれを許可すると思う:
typeof dog // Dog
dog = new Cat()
typeof dog // Cat
ar静的/動的タイピングと強/弱タイピングの定義がたくさんあるので、一般的な質問に非常に具体的に答えることは難しいです。それは、私がそれらのために使う(非常に高いレベルの)定義は、一般的な考えをかなりうまく伝える傾向があると言われています(少なくとも私はそう考えています)。
動的型付け対静的
静的型付け言語は変数に種類が適用されます。変数count
は整数として定義できます。整数値のみを保持できます。
動的に型指定された言語は、型を値に適用しますが、変数は適用しません。値123は整数で、 "abc"は文字列ですが、変数result
は、異なる時点でどちらか一方または両方に割り当てることができます。
強く型付けされた言語で
を入力弱い対ストロングは、値が型を持ち、それが唯一のそのタイプです。たとえば、"123"
は、文字列で、123
が整数です。文字列を整数として扱うことはできず、その逆もできません。あなたはそれらの間で変換することができます(つまり、 "123" .toint()またはそのようなものですが、あるタイプを別のタイプとして扱うことはできません。「123」+ 456 == 579)
弱い型指定言語では、値は単なる値であり、使用に応じてさまざまな型として扱うことができます。たとえば、"123" + 234
と言うことができ、有用な結果が得られます(言語に応じて357または123234)。
静的と動的の間、強弱の間には多くのグレーの領域がありますが、上記の定義は一般的な考え方を示します。
関連トピックでは、明示的なvs暗黙の型指定(プログラマが型を指定し、型がコンパイラの型を指定する)もあります。これはすべて自分自身で本当に面白い話題です。
- 1. 定数変数が関数型の型であれば、変更できないものはありますか?
- 2. 変数型は静的型言語で永続的ですか?
- 3. グローバル変数のないプログラミング言語はありますか?
- 4. プログラミング言語を別の言語に変換するツールはありますか?
- 5. Geditユーザーインターフェイスの言語が英語ではありません。どうすれば変更できますか?
- 6. 例外のメッセージ言語を他の言語に変更できますか?
- 7. 宣言されたルーチンからローカルの型付き定数を変更する方法はありますか?
- 8. ギアウォッチデザイナーステップ数言語変更
- 9. このString型変数をスカラー言語のMap型に変換できますか?
- 10. Umbraco CMSには言語を変更するオプションがありますか?
- 11. 言語を変更する
- 12. Android SDK多言語アプリ - コンパイル時に言語を変更できますか?
- 13. 言語の変更
- 14. Replaykitの言語を変更できますか?
- 15. ローカル変数またはパッシングパラメータの名前を取得できる言語はありますか?
- 16. C言語を使ってGRUBの変数を変更する
- 17. BigIntegerよりも大きい変数型はありますか?
- 18. codeigniterのtimespan()関数で言語を変更するには
- 19. C言語のグローバル変数を変更する
- 20. C言語で型変数を実装する
- 21. MAMP:UI言語を変更するには?
- 22. アンドロイドアプリの言語を変更することはできますか?
- 23. Apple Watchシミュレータの言語を変更することはできますか?
- 24. .htaccessで言語を変更する
- 25. WHMCS、プログラムで言語を変更する
- 26. グローバル変数はC言語のローカル変数より高速ですか?
- 27. Djangoテンプレート言語 - 同じ行に複数の変数がありますか?
- 28. 言語変更のプライベートList変数の更新MVVMとXAML
- 29. UIDatePicker自動変更言語を禁止することはできますか?
- 30. 変数に型があらかじめ割り当てられていない言語を参照する用語はありますか?