問題タブ [mop]
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.
java - Groovyの参照によるリターンの難問
私はBASICスクリプトをハックするためにGroovyでDSLを書いています。BASIC配列の扱い方を考えています。
MOPを使用して次のようなものを処理するのは簡単なようです。
AがDIMされたときに、Aクロージャを動的に宣言します。このAクロージャは、引数に基づいて値を返します。しかし、処理はそれほど簡単ではありません。
Groovyから参照で戻ることができないので。A(5)が左辺値であるか右辺値であるかを解析する以外に、誰かがこれを回避する方法を考えることができますか?
java - 2 次元を超える Java 配列をリストとして扱う
Groovy を使用して BASIC を処理する DSL を作成していますが、多次元 (2 次元以上) の配列を処理する方法について支援が必要です。
私はこのようなBASICコードを扱っています:
1 次元の場合は簡単に処理できます。A の要素を返すクロージャを (MOP 経由で) 作成するだけですが、2 次元の場合は次の形式で同じことができます。
しかし、無制限の次元の配列をどのように処理すればよいでしょうか?
更新:これを少し明確にするために、DSLコンテキストで配列値を動的に返すにはどうすればよいですか? スクリプト インタープリタは A(1, 2, 3) を、MOP を使用してインターセプトできる関数呼び出しと見なします。しかし、そのコンテキストで配列要素の値を返すにはどうすればよいでしょうか?
eclipse - Groovy - com のクラス ノードでの予期しない MOP メソッド
これが何から来ているのか分かりません。Groovy Eclipse プラグイン v2.61、Groovy コンパイラ 1.8.6、Eclipse 3.7 の使用
ここにコードを含めることもできますが、コメント ヘッダーの途中でエラーが生成されます。
プロジェクトのクリーンアップ、プロジェクトの再構築、および関連するトリックを試しました
質問: MOP とは何ですか?無効にする方法はありますか?
フランシス
PS。Groovy コンパイラ 1.7 に切り替えるとエラーは解消されますが、それはほとんど解決策ではありません (IMO)
perl - この魔術を説明してください!!! (Perl では Moose と namespace::autoclean を使用)
それで、最近、Perl と Moose を使用するプロジェクトに取り組んでいます。Moose が MOP 上に構築されていることは理解しています。私は MOP にあまり詳しくなく、理解できないことに遭遇しました。理論的な説明を使用できます。モジュールnamespace::autoclean
のドキュメントは次のとおりです。
つまり、私が Moose を使用する前は、オブジェクトのメソッドを呼び出す方法は次のとおりでした: Perl インタープリターは、オブジェクトが bless されたパッケージのシンボル テーブルでそのメソッドを検索します (見つからない場合は、@ISA
相続など)。パッケージ内からインポートされた関数を呼び出す方法は、パッケージのシンボル テーブルで関数の名前を検索することでした。私がこれまでに知っている限り、どちらの方法でも同じシンボル テーブルを意味するため、この動作は不可能なはずです。
ソースの最初の検査は生産的ではありませんでした。大まかに言えば、Moose、MOP、および namespace::autoclean を使用すると、この種のトリックが可能になるという点で何が違うのでしょうか?
編。特に明確にするために、私use namespace::autoclean
が
を見つける場所がわからないため、ドキュメントに記載されているFoo->bar;
呼び出しがクラッシュします。Foo->bar
imported_function
lisp - クラスのファイナライズ:ダミーインスタンスの作成を避けるには?
サードパーティのライブラリがファイナライズされたかのようにクラスに作用する必要があるという問題に遭遇しました。少し読んだ後、このメカニズムの背後にある動機を理解しましたが、それがどのように機能するかはよくわかりません.
例:
最初の行を追加しない限り、関数はコンパイルされず、次のエラーが発生します。
optima
はパターン マッチング ライブラリであり、指定されたパターンに対して(expression :op op ...)
クラスのインスタンスをマッチングしますexpression
。詳細はわかりませんが、このクラスに定義されているアクセサを知る必要があるようで、その情報は確定するまで利用できないようです。では、ファイナライズの問題を回避する方法はありますか?
クラスは延長されません (少なくともこのプロジェクトでは延長されず、計画されていません)。ダミーのインスタンスを作成してもそれほど害はありません...それはただの醜い解決策なので、より良い解決策を見つけたいと思っていました。また、おそらく、ファイナライズに関する詳細情報も得られるでしょう。これも良いことです:)
common-lisp - ベクトルと行列に特化
私はリアルタイム グラフィックスの実験に common-lisp を使用していますが、これまでのところ非常に優れています。速度とcffiとの簡単な互換性に対する私の要件は、「型付き」配列を使用していることを意味します。コードの中で本当に醜いと感じるのは、行列とベクトルの数学関数の一般的なバージョンです。CLOSは配列の長さに特化できないので、私は次のようなことをしています:
これは機能しますが、正しくないと感じます。私はさまざまな CL 実装の拡張を見てきましたし、MOP の可能性についても耳にしました。
一部の CL 実装で機能が損なわれるのではないかと恐れたため、私はこれを避けてきましたが、最近ではCloser-to-Mop プロジェクトを見てきました。
主な質問: MOP は、長さに特化するためのより効率的な方法を提供しますか? 私が注目すべき領域/技術はありますか?
java - Groovy/Java: JDK クラスのメソッド インジェクションが Java から見えない
JDK クラスにコードを挿入しようとしていInteger
ます。インジェクションは、Groovy 内にいる限り機能しますが、Java クライアントからインジェクトされたコードを使用しようとすると機能しません。
これが問題のデモです。
次のGroovyコード...
...正しい出力が得られます:
今、私はg.groovy
EXCEPTからすべてを削除しますclass G
:
次に、コンパイルしますg.groovy
。
次に、からの注入を利用しようとしますU.java
:
そして、私が得る結果はこれです:
注射は明らかに効きませんでした!