問題タブ [duck-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.
c# - C#. レガシ コードにポリモーフィズムを追加する
変更できない従来のクラスがあるとします。
そのような署名を持つヘルパーを書きたい:
最初の引数が「オブジェクト」型であることに注意してください。テストコードは次のようになります。
問題は、これらに加えてどのような実装を想像できるかです。
ありがとう!
java - Java のような厳密に型指定された言語でダックタイピングに反対するにはどうすればよいですか?
私は Java プログラマーのチームで働いています。私の同僚の 1 人が、「型フィールドを追加するだけ」(usu.「文字列型」) のようなことをするように提案することがあります。またはコードは " " を含んだ状態でコミットされますif (foo instanceof Foo){...} else if( foo instanceof Bar){...}
。
Josh Bloch の「タグ付きクラスは適切なクラス階層の模倣に過ぎない」という忠告にもかかわらず、この種のことに対する私の 1 行の応答は何ですか? そして、どうすればコンセプトをより真剣に説明できるでしょうか?
コンテキストがJavaであることは明らかです-検討中のオブジェクトのタイプは、集合的な顔のすぐ前にあります-IOW:「クラス」、「列挙型」、または「インターフェース」などの直後の単語。
しかし、(その場で)実証または定量化するのが難しいことは別として、「コードをより複雑にする」ことを除けば、「(多かれ少なかれ)強く型付けされた言語でのダックタイピングは愚かな考えです。より深い設計病理学を示唆していますか?
java - 動的型付け以外に、Ruby が Java よりも「柔軟」である理由は何ですか?
私は Java が最初に登場したときからずっと使っていますが、過去 5 年間で、最も単純なことを実行するのがいかに複雑になったかで燃え尽きてしまいました。私は精神科医の勧めで Ruby を学び始めています。つまり、私の同僚 (若くてクールな同僚 - 彼らは Mac を使用しています!) です。とにかく、彼らが繰り返し繰り返していることの 1 つは、Ruby は Java のような古くてボロボロの言語に比べて「柔軟な」言語であるということですが、それが何を意味するのか、私にはまったくわかりません。ある言語が別の言語よりも「柔軟」である理由を誰か説明できますか? お願いします。動的型付けの要点はある程度理解でき、それが簡潔性にどのように役立つかがわかります。そして、Ruby の構文は、まあ、美しいです。ほかに何か?動的型付けが主な理由ですか?
c# - C# とインターフェイス - 明示的対暗黙的
C# では、クラスに Interface のすべての正しいメソッド/シグネチャがあるが、次のように明示的に実装されていない場合:
クラスをそのインターフェイスとしてキャストできますか?
python - Python変数が文字列なのかリストなのかをどうやって見分けることができますか?
文字列のリストをパラメータとして受け取るルーチンがありますが、単一の文字列を渡して、それを1つの文字列のリストに変換することをサポートしたいと思います。例えば:
文字列またはリストが渡されたかどうかを関数はどのように判断できますか?関数があることは知っていtype
ますが、「もっとpythonic」な方法はありますか?
c#-4.0 - 動的型付けと強い型付けの利点を融合した夢の言語はありますか?
オブジェクトを内部的にハッシュテーブル(JavaScriptなど)として処理する言語を学びたいと思いますが、オブジェクトを強力な型でラップして、設計時にコード補完/インテリセンスの利点を提供することができます。これが私がこの夢の言語が機能することを望む方法です:
このプログラムがエラーなしでコンパイルされ、例外なく実行 され、コンソールに「Miauew」と出力されることを望みます。これを行うことができる言語はありますか?多分C#4.0?
oop - 強く型付けされた OOP 言語でのダックタイピングの引数は?
そのような言語 (C#、Java など) で何かを書いて、ダックタイピングを逃したことはありますか? (ダックタイピングに対する議論については、この質問を参照してください)
java - Javaでのダックタイピングの例は何ですか?
最近、ダックタイピングについて聞いたばかりで、それに関するウィキペディアの記事を読みましたが、例をJavaに翻訳するのに苦労しています。これは私の理解に本当に役立ちます.
Javaでのダックタイピングの明確な例と、それをどのように使用できるかを誰かが説明できますか?
python - ゲーム デザイン - ボーナスの処理 / ダック タイピング - python
私は現在、自分のゲーム デザインで設計上の問題に直面しています。ひどいものではありませんが、十分に気になるので、他の人の意見を聞きたいです :-)
私は現在 pygame を試しています。小さなスペース シューターを開発しましたが、いくつかのボーナスを処理したいと考えています。
現在、私は現在実装されているすべてのボーナスを派生させる抽象クラス ボーナスを持っています: プレイヤーにいくらかのヘルスを戻す「ヘルス ボーナス」、プレイヤーのヘルスを 1 に落とす「デス ボーナス」です。
私のゲームループでは、これが私がしていることです(大まかに):
そして、プレイヤーにボーナスを使うように言った直後
これまでのところはすべて問題ありませんが、プレイヤーが撃ったときに爆発して周囲の敵を殺す「爆弾ボーナス」を追加したいと思います。
この「ボーナス」は、私の抽象クラス Bonus の「use(target)」メソッドを他のものと同じように実装していますが、そのようなボーナスをプレーヤーのボーナスのリストに追加するのはちょっと悪い気がします。
ボーナスの背後にある概念は、これが「何かに何かをするもの」であるということです。以前は私のプレーヤークラスのターゲットでしたが、今ではそれほど明確ではありません...もちろん、どのボーナスがどこにあるかを検出した後に player.useBonuses() を呼び出す代わりにたとえば、ボーナスのタイプを(isinstanceを使用して)テストできましたが、ダックタイピングについて読んだすべての議論の後、なぜそれがpythonicな方法なのか、ボーナスの問題をどのように管理できるのか疑問に思っていますか?
ここまで読んでくれてありがとう、皆さんが私を助けてくれることを願っています!
よろしく
dynamic-languages - ダックタイピング - 具象型が必要な場合はどうしますか?
動的言語 (Python など) で電卓を実行していて、add メソッドがあるとします。
ここで、間違った数値以外を渡す場合は、データ型のチェックが必要です。
上記の例のようなパラメーターとは対照的に、ダックタイピングはオブジェクトに関するものですか?
誰かがさらに説明できますか?
編集
オブジェクトとは、次のことを意味します。
メソッドに何が渡されるかは気にしません。