問題タブ [static-typing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
340 参照

c# - 型キャスト エラーとコンストラクター

私は2つのクラスを持っています

Main のコードは次のとおりです。

ここで、1 行目は正常にコンパイルされ、2 行目は型キャスト エラーが表示されます。なぜこれが起こるのか。new B()new A()が呼び出されると、正確には何が起こりますか?

0 投票する
8 に答える
3694 参照

java - Pythonの静的型付けの欠如は、大規模なプロジェクトの保守性と拡張性にどのように影響しますか?

この非常に有益な(多少議論の余地はあるものの)質問を読んだ後、Pythonを使用して大規模なプロジェクトをプログラミングした経験を知りたいと思います。プロジェクトが大きくなるにつれて、物事は管理できなくなりますか?この懸念は、私がJavaに執着し続ける理由の1つです。したがって、大規模なプロジェクトでのJavaとPythonの保守性と拡張性の情報に基づく比較に特に関心があります。

0 投票する
6 に答える
7527 参照

scala - Scala型システムとHaskellの欠点?

Scala の型システムは Java の相互運用性によって弱められているため、Haskell の型システムと同じ機能を実行できないと読んだことがあります。これは本当ですか?弱点は型消去によるものですか、それとも私はあらゆる点で間違っていますか? この違いが Scala に型クラスがない理由ですか?

0 投票する
12 に答える
1444 参照

scala - 静的言語で適用関数を作成できませんか?

applyScalaやHaskellのような静的に型付けされた言語では、Lisp関数を作成または提供する方法がないことを読みました。

または多分

これは真実ですか?

0 投票する
5 に答える
828 参照

ruby - 静的に型付けされた言語がRubyのmethod_missingのようなものを持つことを妨げるものは何ですか?

私は静的に型付けされた言語(現在Scalaを学び、それを愛している!)の経験はあまりありませんが、Rubyのmethod_missingやColdFusionのonMissingMethodのようなものがないように見えることに気づきました。静的に型付けされた言語には、これを防止または困難にする固有の制限がありますか?

0 投票する
5 に答える
800 参照

generics - 静的に型付けされた言語は、ジェネリックなしでどのように処理しますか?

どの静的型付け言語がジェネリックをサポートしていないか (そして、歴史的にどの言語がジェネリックを持っていなかったのか)、そしてそれらがどのように対処しているかに興味があります。

ユーザーはあちこちにキャストしますか? リストや辞書などの基本的なコレクションをジェネリックにできる特別なソースはありますか?

これらの言語にジェネリックがないのはなぜですか? 潜在的な複雑性やその他の理由を避けるためですか?

0 投票する
3 に答える
95 参照

oop - 明示的に静的に型付けされたプログラミング言語

気になります。

C++ や Java のような言語が存在するかどうかを知りたいと思っています。その言語は (a) 明示的に (つまり、推論によるものではなく) 静的に型付けされ、(b) オブジェクト指向です。

私は D を認識していますが、他の人は何を使用していますか?

乾杯

0 投票する
6 に答える
6223 参照

clojure - Clojure の静的型付け

Lisp 愛好家 (およびその他の動的言語愛好家) にとって、これは冒涜のように聞こえるかもしれませんが、静的 (コンパイル時) 型チェックをサポートするように Clojure コンパイラを拡張するのはどれほど難しいでしょうか?

静的型付けと動的型付けの賛成論と反対論を脇に置いて、これは可能ですか (「これはお勧めできません」)?

コンパイル時の型を強制する新しいリーダー マクロ (#^ マクロの拡張バージョン) を追加し、型情報をシンボル テーブルに追加すると、変数が誤用された場所にコンパイラがフラグを立てることができるようになると考えていました。たとえば、次のコードでは、コンパイル時エラーが予想されます (#* は「コンパイル時」タイプのマクロです)。

#^ マクロをグローバル変数 ( *compile-time-type-checking*) で再利用して、コンパイラにチェックを強制することもできます。

実現可能性について何か考えはありますか?

0 投票する
3 に答える
1097 参照

clojure - Clojure静的型付け、パート2

これは、 Clojureの静的型付けに関する以前の質問のフォローアップです。

コンパイラのJavaソースコードを参照しましたが、の値をチェックする場所がいくつかありますが*warn-on-reflection*、次のコードをコンパイルすると、実行時エラーのみが発生します。

このコードがコンパイル時の警告を出すべきではない(出さない)状況はありますか?コンパイラに次のコードで警告を出すのはどれほど難しいでしょうか。

ありがとう。

0 投票する
2 に答える
1818 参照

scala - Scalaに関して「グローバル型推論なし」とはどういう意味ですか?

Scalaの型推論はグローバルではないことを読みました。そのため、人々はメソッドに型アノテーションを配置する必要があります。(これは「ローカル」型推論でしょうか?)

その理由がオブジェクト指向の性質にあることを私は少しだけ理解していますが、明快さは私にはわかりません。「グローバル型推論」についての説明はありますか?また、Scalaが初心者が理解できるようにそれを理解できないのはなぜですか?