問題タブ [class-helpers]
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.
delphi - クラスヘルパーを使用して保護されたメソッドを呼び出すにはどうすればよいですか?
非常に役立つ可能性があるが、保護されたスコープのために利用できないメソッドを持つクラスがあるとします。
私は、そのような方法に手を差し伸べる 2 つの昔ながらの方法を知っています。どちらも、継承と型キャストが関係しています。どちらのアプローチも、基本的なケース #1 と高度なポリモーフィック ケース #2 で同じように機能するはずです。
知りたい:
- クラスヘルパーの力を適用して同じ結果を得るにはどうすればよいですか?
- クラスヘルパーでもプライベートメソッドを呼び出すことは可能ですか?
- 内部表現ではなく、どのクラスヘルパーがクラススコープを拡張するという事実により、ケース#1とケース#2の間に違いはありますか?
- 再帰の危険を冒さずにクラスヘルパーで再導入されたメソッドから元のメソッドを呼び出す方法は?
また、不安全に関する発言についてはコメントをお願いしTIntroducer
ます。
delphi - クラスヘルパー構文の「祖先リスト」の目的は何ですか? それはどこに文書化されていますか?使用例はありますか?
最新のものを含むすべてのドキュメント バージョンは、次のクラス/レコード ヘルパー構文を提供します。
そして、それは何を説明するだけです...
祖先リストはオプションです。クラスヘルパーのみ指定可能です。
...そして、これ以上詳細に入る必要はありません。ドキュメント トピックの残りの部分の使用例は、ancestor list
オプションであるという事実を利用するだけです。私が見た EMBA のコードはすべて、サードパーティのコードもすべて、このancestor list
部分を使用していません。
だから、私の質問はタイトルに概説されています:
ancestor list
クラスヘルパー構文の目的は何ですか?- それはどこに文書化されていますか?
- 使用例はありますか?
delphi - クラスヘルパーがスコープ内にあるときに元のクラスのコードを呼び出す方法は?
改良版のクイックソートで単体テストを行っています。
(うまくいけば) より高速なバージョンは、次を使用して実装されます。
今のところ、テスト目的で の名前Sort
をに変更できることはわかっていますが、ある時点でメソッド名を に修正する必要があります。 SortNew
sort
スコープ内にクラス ヘルパーがある場合、元のメソッドを呼び出すにはどうすればよいですか?
rtti またはその他のラウンドアバウト メソッドを使用する方法はありますか?
delphi - リテラルで TExtendedHelper を使用するにはどうすればよいですか?
(およびその他)を使用System.SysUtils.TShortIntHelper
すると、次のように記述できます。
5
のように数値をフォーマットしますstring
。同様に、ありますがSystem.SysUtls.TExtendedHelper
、コンパイルできません:
E2018: レコード、オブジェクト、またはクラスの型が必要です
動作しない他のバージョン:
5.0.ToString()
(1.0+5.1).toString()
(5+0.).toString()
(E2029: ')' が必要ですが、']' が見つかりました)
実際に動作するバージョン:
(1+5.1).toString()
(1.1+1+5.1).toString()
5.9e0.toString()
拡張値が宣言されている場合、次のconst
いずれも機能しません。
しかし、それの定義がq : extended = 5.5;
あればうまくいきます。では、なぜコンパイラがこのように動作するのか疑問に思っています。