タグ付けされた質問 「static-typing」


30
インターフェイスと基本クラス
いつインターフェイスを使用する必要があり、いつ基本クラスを使用する必要がありますか? メソッドの基本実装を実際に定義したくない場合は、常にインターフェースにする必要がありますか? 犬と猫のクラスがある場合。PetBaseの代わりにIPetを実装したいのはなぜですか?IShedsまたはIBarks(IMakesNoise?)のインターフェースをペットごとに配置できるため、それらを使用できることは理解できますが、一般的なペットにどのインターフェースを使用すればよいかわかりません。


9
静的/動的vs強/弱
私はこれらの用語がプログラミングのあちこちに散らばっているのを見て、私はそれらが何を意味するのか漠然とした考えを持っています。検索の結果、スタックオーバーフロー全体でそのようなことが要求されていることがわかりました。私の知る限り、言語での静的/動的型付けは、厳密/弱い型付けとは微妙に異なりますが、その違いが何であるかわかりません。ソースが異なれば、意味も異なるように見えるか、用語を同じ意味で使用しているように見えます。両方について話し、実際に違いを説明している場所はどこにもありません。誰かがこれを私と世界の残りのためにここに明確に綴ってくれればいいのですが。


5
Javaキャストではオーバーヘッドが発生しますか?どうして?
あるタイプのオブジェクトを別のタイプにキャストするときにオーバーヘッドはありますか?または、コンパイラはすべてを解決し、実行時にコストはかかりませんか? これは一般的なことですか、それともさまざまなケースがありますか? たとえば、Object []の配列があり、各要素の型が異なる可能性があるとします。ただし、たとえば、要素0はDouble、要素1はStringであることを常に確信しています。(私はこれが間違った設計であることを知っていますが、私がこれをしなければならなかったと仮定しましょう。) Javaの型情報は実行時に保持されますか?または、コンパイル後にすべてが忘れられ、(Double)elements [0]を実行した場合、ポインタをたどり、それらの8バイトをdoubleとして解釈します。 Javaで型がどのように行われるかについては非常に不明確です。本や記事についての推薦があれば、感謝します。

7
TypeScript:型システムの問題
私はVisualStudio 2012でtypescriptをテストしているだけで、その型システムに問題があります。私のHTMLサイトには、「mycanvas」というIDのcanvasタグがあります。このキャンバスに長方形を描こうとしています。これがコードです var canvas = document.getElementById("mycanvas"); var ctx: CanvasRenderingContext2D = canvas.getContext("2d"); ctx.fillStyle = "#00FF00"; ctx.fillRect(0, 0, 100, 100); 残念ながらVisualStudioは不平を言います プロパティ「getContext」は、タイプ「HTMLElement」の値に存在しません 2行目をエラーとしてマークします。これは単なる警告だと思いましたが、コードはコンパイルされません。VisualStudioはそれを言う ビルドエラーがありました。最後に成功したビルドを続行して実行しますか? このエラーはまったく気に入らなかった。動的メソッド呼び出しがないのはなぜですか?結局のところ、getContextメソッドは間違いなくcanvas要素に存在しています。しかし、この問題は簡単に解決できると思いました。canvasの型注釈を追加しました: var canvas : HTMLCanvasElement = document.getElementById("mycanvas"); var ctx: CanvasRenderingContext2D = canvas.getContext("2d"); ctx.fillStyle = "#00FF00"; ctx.fillRect(0, 0, 100, 100); しかし、型システムはまだ満足されていませんでした。これが新しいエラーメッセージです。今回は1行目にあります。 「HTMLElement」を「HTMLCanvasElement」に変換できません:タイプ「HTMLElement」にタイプ「HTMLCanvasElement」のプロパティ「toDataURL」がありません まあ、私はすべて静的型付けに専念していますが、これにより言語が使用できなくなります。型システムは私に何をしたいですか? 更新: Typescriptは確かに動的呼び出しをサポートしておらず、私の問題はタイプキャストで解決できます。私の質問は基本的にはこの1つのTypeScriptの複製です:HTMLElementのキャスト

2
ジュリアで型宣言が必要
Juliaで(たとえば、モジュールまたはパッケージ内で)型を 宣言する必要 があることを明示的に要求する方法はありますか?例えばないPackageCompilerかは、Lint.jlこのようなチェックのための任意のサポートがありますか?より広義には、Julia標準ディストリビューション自体が、この要件の確認に役立つ静的コードアナライザーまたは同等の機能を提供していますか? やる気を起こさせる例として、成長する本番用コードベースが常に型宣言されているコードのみを受け入れるようにしたいとします。仮に、型宣言を持つ大きなコードベースは保守しやすい傾向があるという仮説に基づいています。 その条件を強制したい場合、その標準配布のJuliaは型宣言を要求するメカニズムを提供するか、またはその目標を進めるのに役立ちますか?(例えば、リンター、コミットフック、または同等のものを介してチェックできる何か?)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.