問題タブ [identifier]
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# - フィールドを識別する「エレガントな」方法は?
私は、プログラマー アプリケーションの根底にあり、特定のデータへのアクセスを検出する必要があるシステムを作成しています。私はほとんどの場合、次のようにプロパティを使用してこれを行うことができます。
次に、アクセスを適切に処理できるようにアクセサーget
とアクセサーを微調整します。set
ただし、これには、ユーザー (アプリケーション プログラマー) がすべてのデータをプロパティとして定義する必要があります。
ユーザーが (プロパティではなく) 「通常の」フィールドを持つ既存のクラスを使用したい場合、それらのアクセスを検出できません。例:
へのアクセスを検出できませんy
。ただし、既存のクラスの使用を許可したいと考えています。妥協点として、そのようなデータへのアクセスが発生するたびに、ユーザーは私に通知する責任があります。例えば:
そんな感じ。信じてください、私はこれを非常に徹底的に調査しましたが、アクセスを検出するためにバイトコードを直接分析することでさえ、間接的な可能性などのために信頼できません.私は本当にユーザーに私に通知してもらう必要があります.
そして今、私の質問: これらの通知を実行するための「エレガントな」方法をお勧めできますか? (はい、私はこの状況全体がそもそも「エレガント」ではないことを知っています;私はそれを悪化させないようにしています;))。どのようにしますか?
実際の状況は次のようなものであるため、これは私にとって問題です:私は次のクラスを持っています:
ユーザーがこれを行いたい場合:
代わりに、次のようにする必要があります。
WhereWrite
は のクローンを返します。これは、とにかくアクセサに実行してnotSoNice
ほしかったことです。set
ただし、文字列を使用するのはかなり醜いです。後でフィールドをリファクタリングする場合、Write("notSoNice")
アクセスを調べて文字列を変更する必要があります。
どのようにフィールドを識別できますか? 文字列、整数、列挙型 (つまり、整数) しか考えられません。しかし:
- 文字列の問題についてはすでに説明しました。
- イントは苦痛です。ユーザーはどの int がどのフィールドに対応するかを覚えておく必要があるため、さらに悪いことになります。リファクタリングも同様に困難です。
- 列挙型 ( や など
NOT_SO_NICE
、Z
つまり のフィールドSemiNiceClass
) はリファクタリングを容易にしますが、ユーザーはクラスごとに列挙型 (SemiNiceClass
など) を、クラスのフィールドごとに値を記述する必要があります。気に障る。彼らに嫌われたくないです;)
では、なぜ私たちはこれを行うことができないのでしょうか?
どのフィールドがアクセスされているかを知る必要がありsemiNice.notSoNice
、フィールドを識別しないためです。フィールド自体ではなく、フィールドの値です。
はぁ。私はこれが醜いことを知っています。私を信じてください ;)
提案をいただければ幸いです。
前もって感謝します!
(また、この質問に対する適切なタグが思いつきませんでした。より良いアイデアがあればお知らせください。編集します)
編集 #1: Hightechrider の提案: 式。
Write(x =>semiNice.y, 0)
質問のために書いたクラス ( など) に基づいているSemiNiceClass
のか、それとも単なる例なのかはわかりませんが、前者の場合は構造と一致しません: にy
フィールドがありませんSemiNiceClass
。ということWrite(x =>semiNice.notSoNice.y, 0)
ですか?
これをどのように使用するつもりなのかわかりません...私が書いたコードを投稿します:
でその情報を取得するにはどうすればよいWrite
ですか? からその情報を抽出する方法が見つかりませんFunc<,>
。また、何にも使用していないのに、なぜsemiNice.Write(x => semiNice.notSoNice.y, 50);
の代わりに書くのですか?semiNice.Write(() => semiNice.notSoNice.y, 50);
x
ありがとう。
編集 #2: Hans Passant の提案: フィールドをプロパティに置き換えます。
これは私が最初に意図したことですが、再コンパイルはオプションではありません。
編集 #3 : Ben Hoffstein の提案: 動的プロキシ。リンフー。
私はすでにこれを長く懸命に調べてきましたが、比較的複雑な理由で使用できません。説明するには長くなりすぎますが、安心してください。それは私の現在のソリューションよりもはるかにきれいです。
xml - アンダースコアを含むノードを使用したXMLの解析
アンダースコアが存在するノードを含むXMLドキュメントを解析するにはどうすればよいですか?
私はこれを試しました:
しかし、それはうまくいかないようです。XMLもサードパーティのものであるため、変更できません。どんな助けでも素晴らしいでしょう。前もって感謝します!
java - Java識別子としてUnicodeシンボルを使用するのは良い考えですか?
次のようなコードスニペットがあります。
Java識別子でUnicode文字を使用するのはどれほど悪い考えですか?それともこれは完全に受け入れられますか?
jquery - 対応する CSS ルールなしで CLASS 属性を使用するのは不適切な形式ですか?
たとえば、jQuery を使用して特定のクラスを持ついくつかの要素を選択したい場合、その理由だけで、それらのクラスが css で定義されるべきであることが常に期待されますか?
c++ - C++ conversion from string to object identifier
I'm writing a program in C++ that reads in some data from an external file in order to set the values of static variables.
Is it possible to convert a string to an object identifier? (e.g. convert the string "CheckBox::Unchecked" into an identifier for the object CheckBox::unchecked)
php - 一貫した ID (メッセージ ID) を使用して imap から特定のメッセージを取得する方法
電子メール メッセージのリンク追跡を維持する必要があります。PHPとIMAPを使用しています。時間の経過とともにメールを識別する ID が必要です。expunge() の後に UID が変更されるため、IMAP UID を使用しても機能しないようです。メールには message_id があることはわかっていますが、PHP と IMAP で message_id を使用してメールを取得するにはどうすればよいですか?
使用できる別の識別子はありますか?
java - 識別子に # を使用できないのはなぜですか?
Java では、識別子を $ (ドル記号) で開始するか、または含むことができます。例 int a$b;
しかし、# を識別子に使用できないのはなぜですか? 具体的な理由は?# は Java の演算子か何かですか? 例 int a#b;
php - 追加しない場合、チェック名は一意です
私のアプリケーションでは、ユーザーが会社名を入力する必要があります。この名前は、URLで使用される一意の識別子に自動的に作成されます。
「Bob'sCafe」は「bobs-cafe」になります
ただし、名前が重複している場合は、アプリケーションに番号を追加してほしいので、すでに「bobs-cafe」がある場合は「bobs-cafe-1」を使用し、同様に「bobs-cafe-1」がすでにある場合は使用します。 「bobs-cafe-2」を使用します
explodeを使用し、正規表現も調べましたが、これにアプローチする最善の方法がわかりません。
数字を取得してインクリメントし、文字列を返すことができることに固執しています
apache-flex - 総称識別子
問題を適切な言葉で説明していない可能性があるため、Google で回答を得ることができませんでした。すみません!
次のコードでは、「ハードコードされた」識別子 COMMENT を変数 editField に置き換えたいと思います。どうやってするか?
sql - データベース名に数字を含めると、データベースを作成するための SQL Server クエリでエラーが発生する
Microsoft SQL Server 2005で単純な SQL クエリを実行してデータベースを作成する際に問題が発生しましたが、その理由がわかりません。
このクエリを実行すると
このエラーが表示されます
「4444」付近の構文が正しくありません。
名前に数値を含むデータベース テーブルを作成する場合、特に指定しなければならないことはありますか? それとも私は何かを忘れていますか?