問題タブ [dynamic-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.
javascript - ポリモーフィックなインライン キャッシュは可変型でどのように機能しますか?
ポリモーフィック インライン キャッシュ (PIC) は、高価なルックアップ手順 (通常はハッシュテーブル ルックアップ) を回避するために、オブジェクトの型によって実際のメソッドをキャッシュすることによって機能します。
型オブジェクトが変更可能な場合 (つまり、メソッドが実行時に別のものにパッチされたサルである可能性がある場合)、型比較をどのように処理しますか?
私が思いついたアイデアの 1 つは、メソッドが調整されるたびにインクリメントされる「クラス カウンター」です。それらのメソッドが変更されていなくても、そのクラス。
この問題は JavaScript に直接当てはまり、大きな JavaScript 仮想マシンの 3 つすべてに PIC があることがわかっているため、これには適切な解決策があるに違いないと確信しています。
c#-4.0 - 動的型付けと強い型付けの利点を融合した夢の言語はありますか?
オブジェクトを内部的にハッシュテーブル(JavaScriptなど)として処理する言語を学びたいと思いますが、オブジェクトを強力な型でラップして、設計時にコード補完/インテリセンスの利点を提供することができます。これが私がこの夢の言語が機能することを望む方法です:
このプログラムがエラーなしでコンパイルされ、例外なく実行 され、コンソールに「Miauew」と出力されることを望みます。これを行うことができる言語はありますか?多分C#4.0?
objective-c - Objective-C の動的型付けと戻り値
理解できない非常に奇妙な動作に遭遇しました。type のプロパティを持つTexture
クラスがあります。このクラスは、 type のプロパティを持つクラスにラップされています。のは、基礎となるテクスチャのとして単純に計算されます。contentWidth
int
Image
width
int
width
Image
contentWidth
は、画像サイズを読み取りたいクラス (継承ではなく構成による) によってImage
使用されます。Button
問題は、変数に(–2147483648)が含まれているのに、変数がheight
正常に設定されることです。寸法を確認しましたが、約 200×100 程度で、限界にはほど遠いです。また、Xcode デバッガーのツールチップには、両方のプロパティが正しく表示されますが、幅が 2 つのアクセサーを通過した後でのみ、数値が文字化けします。オブジェクトは解放されません。私は何が欠けていますか?width
NaN
int
Texture
更新:Image
クラスのアクセサーを展開して、問題の原因を確認しました。
最初の行で改行すると、w
が正しく設定されます。ステップ オーバーすると、実行は呼び出し元の関数に戻ります。
…そして、bar
contains NaN
.
更新:うーん、わかりました:
はimage
として宣言されておりid
、これがポイントです。誰かがこれを説明できますか?私は正しいwidth
メソッドを呼び出していないと感じていますが、ここで何が起こっているのでしょうか? 私は常に変数をできるだけ厳密に入力しますが、ここではid
型が便利です。このようなバグが発生する可能性があるとは思いもしませんでした。
c# - C# 4.0 から使用されている COM ライブラリで、動的型を大量に使用する必要があるのはなぜですか?
C# 4.0 のデモでは、動的型を使用するコードがたくさん見られます。たとえば、次のコードは Excel セルの値を設定します。
Excel.Cells[1, 1].Value = ...
ただし、キャストを使用して事前にバインドされた方法でセルにアクセスすることもできます。
((範囲)excel.Cells[1, 1]).Value = ...;
そもそも、Excel COM ライブラリで Cell 型を Range 型として記述しないのはなぜですか? 同様に、次のメソッドのすべての引数は動的です。
Excel.ActiveWorkbook.Charts.Add(...)
引数を静的にできなかったのはなぜですか? Excel のオブジェクト モデルを見ると、至る所に動的な型があります。これは、COM の表現力の制限によるものですか? COM ライブラリで静的型ではなく動的型が使用される場合のパターンはありますか?
language-design - 動的タイピングが解釈された言語に関連付けられることが多いのはなぜですか?
簡単な質問: 私は C++/Java のようなコンパイル済み言語や Python/Javascript のようなインタープリター型言語で (専門的にも個人的にも) 多くのプログラミングを行っています。個人的には、静的に型付けされた言語でプログラミングすると、ほとんどの場合、コードがより堅牢になることがわかりました。ただし、私が遭遇するほとんどすべてのインタープリター言語は、動的型付け (PHP、Perl、Python など) を使用しています。コンパイルされた言語が (ほとんどの場合) 静的型付けを使用する理由はわかっていますが、解釈された言語設計で静的型付けを嫌う理由がわかりません。
急激な切断はなぜですか?それはインタープリター言語の性質の一部ですか?おっと?
java - ruby のオブジェクト参照の型
私はRubyが初めてで、現在ガイドとして使用しているRubyの本からいくつかの例を試しています:
これは、同じスクリプト ファイル内に 2 つのクラスを含む非常に単純な例です。credit メソッドと debit メソッドに渡す引数の型について混乱しています。Java から来て、私はまだ型の観点から物事を考えているので、明らかに、私が渡すアカウント変数の型、たとえば debit メソッドは Account 型でなければなりません。
ruby は動的に型付けされ、型をチェックしないため、渡す引数を安全に操作し、account.balance -+ amount と言って残りのメソッドを定義するにはどうすればよいでしょうか?
debit メソッドに Account 以外のオブジェクトへの参照を渡すと、どのような安全性があるのかを理解しようとしています。
以下のメソッドの本体が定義されると、指定されたパラメーター アカウントが使用されます。今、私はまだアイデアを理解できないので、私は自分自身を繰り返していると思います...どうすれば引数アカウントを取得できますか(誰もチェックしていないので、どのようなタイプでもかまいません)、ドットを使用していくつかのロジックを構築できます演算子を使用して、そのインスタンス変数を要求するか、他のメソッドを呼び出して、正しい種類 (または型) であるかどうかに関係なく、オブジェクトに対して計算を実行しますか? もちろん、暗黙のうちに Account 型にしたいと思います。
また、2 つのクラスを別のファイルで宣言した場合、同じ例はどのように機能しますか?
初心者の質問については、事前に心からお詫び申し上げます。動的型付けについて理解するのが難しいと思います。この本はこれについて少し曖昧であるか、Java だけで考えてトンネルのビジョンを揺るがすことができないかのどちらかです。
実用的な説明があれば大歓迎です。
programming-languages - 静的型付け言語と動的型付け言語の違いは何ですか?
新しいプログラミング言語は動的に型付けされるとよく耳にしますが、言語が動的に型付けされるのか静的に型付けされるのかというと、実際にはどういう意味ですか?
java - Javaでタイプのインスタンスを動的に作成するにはどうすればよいですか
私のJavaアプリケーションにはメソッドがあります
このメソッド内で、 Transactionを拡張するオブジェクトTのインスタンスを作成する必要があります。
このようにするのは正しいですか
java - CLR と JVM における動的型付けへのさまざまなアプローチ
.NET 4.0 では、動的に型指定されたオブジェクトの呼び出しをディスパッチするための新しいサポートが導入されています。私が理解できる限り、これには次のことが含まれます。
- CLR に変更はありません
- BCL の新しい型
- 新しい構文を新しい型の使用法に変換する新しいコンパイラ
Java スペースでは、JVM に新しいdynamicinvoke
バイトコードを追加して、ディスパッチが中間言語の抽象化の背後で JIT によって処理されるようにすることについて議論しています。
Java のアプローチは、多くの重要な関係者から支持されています。
これらは、2 つの根本的に異なるアプローチのように見えます。それぞれのメリットは何ですか? また、なぜ両方の陣営が異なる道を選んだのですか? 私は、両方のソリューションの柔軟性と実行時のパフォーマンスに特に関心があります。両方の VM が最終的に同じことを達成しようとしていますか?