問題タブ [qualified-name]
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.
compiler-construction - ./ Clojure(修飾記号?)
私は現在、Clojureで別の言語( Shen )を実装しています。
Shenには記号「./」がありますが、Clojureではこれは評価前に解釈されるため、エラーが発生します。この関数をClojureコードにコンパイルしているマクロ内に「./」は必要ありません。
これを無視する方法はありますか?a/またはxyz/に置き換えると同じエラーメッセージが表示されるため、修飾記号として解釈されますが、名前はないと思います。
私の現在のマクロは
しかし、Shenコードで呼び出すと、次のようになります。
誰かがこれを手伝ってくれることを願っています。
前もって感謝します。
c++ - C 関数を `std` 名前空間で修飾しても問題ありませんか?
<cmath>
またはのような C から継承された関数を使用する場合、<cstdlib>
それらを標準の名前空間の一部として修飾する必要がありますstd::log
か、それとも C スコープにとどまってグローバル関数として使用する必要がありますか? どうsize_t
ですか?
java - 完全修飾名
Java ソース コードに存在する完全修飾名をすべて抽出する必要があります。誰かが私を正しい方向に向けることができますか? すべての修飾名をインポート指示に変換する必要があります。詳細: ctl+shift+M と同じことを行います。そして、それはユーザーにとって完全に抽象化されたものでなければならず、ソースコードを変更するたびに機能が尋ねられます。Java ソース コード ファイルは他のゲレーター (メタ言語) によって生成され、ジェネレーターを変更することはできません。自動でなければならないので、Shift + Ctrl + Mは使用できません
wpf - 名前空間宣言の修飾名
MSDN-XAML NamespacesとMSDN-Understanding XAML Namespacesを読んだ後でも、修飾名 (QName)を持つ目的を理解していません。
例として、次の名前空間宣言を取り上げます。
xmlns:x='http://www.w3.org/1999/XSL/Transform'
x
完全な URI (この場合は URL) の短いプレフィックスです: http://www.w3.org/1999/XSL/Transform
. 次に、と呼ばれるこの QName がありますxmlns
。mdsn の QName の定義は次のとおりです。
プレフィックスを含むこの完全な名前は、修飾名 (QName) の字句形式です。
t ステートメントには、使用する名前空間とその名前を識別するためのロケーターとプレフィックスが既にあるため、それは何を意味するのでしょうか。
java - 修飾された静的最終変数が静的初期化ブロックで許可されないのはなぜですか?
ケース1
ケース 2
ケース 1でコンパイル エラーが発生するのはなぜですか?
namespaces - XMLスキーマの「フォーム」属性は実際には何に適していますか?
ここ数日、XML スキーマのスキルを磨いており、スキーマに関する名前空間の複雑さを理解するのに 1 日中忙しくしていました。form="qualified|unqualified"
最も印象に残ったのは、非グローバル要素<element>
と要素の属性が役に立たないように見えることでした<attribute>
。
私の質問は次のとおりです。form
属性は実際に XML スキーマ / XML ドキュメントに表現力を追加しますか、それとも特定の XML ドキュメントの表記法をより簡単/異なるものにするだけですか?
特定のスキーマに準拠する必要がある XML ドキュメントは、一般に、すべての要素が名前空間で修飾されている場合 (ドキュメント要素の xmlns="xyz" 属性が 1 つあれば十分です) の方が書きやすいことは理解していますが、それだけで十分でしょうか? ? なぜ誰も修飾されていない非グローバル要素を気にするのでしょうか?
c++ - 「余分な修飾」エラー。規格によってどのように保証されていますか?
この同様の不運な質問 には、コメントと短い回答がありましたが、終了する前に、次のように述べています。ここで、C++ 標準がそのように定義されているという証拠を求めています。
gcc 4.8.1 と clang 3.3 は同様に、デフォルトの診断オプションまたはより厳密なオプションを使用すると、次のようなコードの追加の修飾または明示的な修飾に対してエラーが発生します。
gcc は v4.1 以降、このようなエラーを診断しています。しかし、一般的なコンパイラは、これらのエラーについて全会一致ではありません。MSVC++ 2012 (Nov CTP) ではエラーint ::y;
が発生しますが、エラーが発生した場合でも、/Wall
診断はまったく行われません。これは
int x::i;
、不運な質問者が提起したようなケースであり、その違いは、MS コンパイラの作成者による審議を示唆しています。
これらのエラーは、標準によってどのように保証されますか? C++11 標準への参照で十分です。
答えは「彼らは文法に従っている」かもしれません。その場合、それらがどのように文法に従っているかを示すようにしてください。標準の文法分類を自由に使用してください。コピーを持っているので、説明を理解するために読み直します。
c# - XML要素の修飾名とその子ノードをC#で取得
編集:
ここで 3 つのことを達成しようとしています: XmlNode クエリを取得し、XmlNode QueryId を取得し、a:schemaLocation の値を取得しますが、解析後は null になります。XML から修飾名を削除すると、C# ビットは正常に機能します。コードをどのように書き直す必要がありますか?
XML:
C#:
c++ - C++で長い(修飾された)識別子を短縮する方法は?
Java では、名前空間を使用するのは非常に簡単です。Ident
ソース ファイルで使用する修飾識別子ごとimport ns1.ns2.ns2.ns3.ns4.Ident;
に、ファイルの先頭に を置きます。次に、ソース コードのあらゆる場所で (短い) 非修飾名を使用できます。このimport
ステートメントは、それが書き留められているファイルにのみ適用されるため、問題が発生することはありません。
ただし、C++ で名前空間修飾子を削除する最善の方法はよくわかりません。
最も明白な解決策は、おそらくusing
andusing namespace
ステートメントです。ただし、少なくともヘッダー ファイルの場合は、using ステートメントが記述される単一のファイルに限定されないため、これはかなり悪い解決策のようです。たとえばusing
、実装が直接内部にあるヘッダー ファイルのみで構成されるスリムなライブラリの場合、または一般的なヘッダー ファイルの場合は除外されます。
これまでに使用した別のオプションは、クラスで使用する修飾名ごとに、クラスtypedef
のプライベート セクションに対応するものを追加することです。したがって、このアプローチを Java と比較する場合、基本的に import ステートメント リスト全体を取得し、import
withtypedef
を置き換えてクラス宣言に配置します。
ただし、メソッド宣言の型は対応するクラスのプライベート型であるため、厳密に言えば、クラスのユーザーは戻り値とパラメーター値の型を知らないため、このアプローチはあまり好きではありません。
OK、これですべてtypedef
を公開できます。しかし、それぞれの型を何度も再定義するので、これはおそらくあまり良い考えではありません。構造体ns1::ns2::ns3::MyStructure
と 2 つのクラスMyClassA
とMyClassB
. 両方のクラスには、実際には のインスタンスをパラメータとして取るメソッドがありますns1::ns2::ns3::MyStructure
。しかし、すべてのクラスは、長い修飾名を取り除くために使用する型を再定義するため、2 つのメソッドは「異なる」型のパラメーター ( と など) を受け取るようにMyClassA::MyStructure
なりMyClassB::MyStructure
ました。MyClassC
のインスタンスで動作し、MyStructure
両方のメソッドを呼び出す必要がある 3 番目のクラスがある場合は、さらにキャッチーになります。このクラスは、このインスタンスをタイプMyClassA::MyStructure
、MyClassB::MyStructure
またはで宣言する必要がありますMyClassC::MyStructure
か?
ええと、私が知りたいのは、名前空間修飾子を取り除くためのベストプラクティスは何ですか?