問題タブ [metaprogramming]
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++ メタプログラミング - コードでエラーを生成する
テンプレート パラメーターを受け取る関数を作成し、関数にint
渡された値が 10 未満の場合にコンパイル時エラーを発生させる方法はありますか?
次のコードは機能しませんが、私が達成したいことを示しています。
metaprogramming - 1 CE (別名 AD 1) の前は何年?
その前の年は西暦0年ですか、それとも紀元前1年ですか?
これは、リストの最初の数字をめぐる宗教戦争に関するメタプログラミングの質問です。0か1か?
考慮すべき点:
- リチャード・ストールマンは何と言うでしょうか? 最近、OLPC が Windows を提供していることに腹を立てた彼の記事を読みました。彼はこれが悪い理由を挙げました。リストには 0 から始まる番号が付けられました。
- 10 年問題 (Y1) が発生し、コンピューターが 1 年あたりに格納できるビット数を突然 2 倍にしなければならなくなったとき、彼らはどのように対処したでしょうか?
- Joel が Excel マクロ言語の新しいバージョンの日付を提案したとき、1900 年 1 月と 2 月の日付の日付 ID が間違っていることを考慮した場合、Joel はこれをどのように処理したでしょうか? (ここを参照してください:私の最初の BillG レビュー)
編集: 以下の @Sveil によって引用されたウィキペディアのエントリは、記録のためだけに西暦 0 年はなかったと述べています。紀元前 1 世紀から西暦 1 世紀にまっすぐ進みました。
perl - シェルまたは Perl スクリプトへのパラメータを自動検出して、それらの WEB UI を「メタ」プログラムできますか?
それらの WEB UI を「メタ」プログラムするために、シェル/Perl スクリプトへのパラメーターを自動検出することは可能ですか?
「Web ラップ」したい「レガシー」スクリプトがたくさんあります。これまでのところ、bash/Perl レポート スクリプトを呼び出すことができる約 3 つのパラメーターを持つ CGI-BIN Web アプリを作成しました。
しかし、今では、これらの数百のスクリプトをラップするより迅速または自動的な方法があるのではないかと思います。
したがって、基本的には、特定のbashまたはPerlスクリプトが取る入力パラメーターを発見し、それらの入力パラメーターをTEXT INPUTまたはSELECTドロップダウンボックスなどとして使用して、対応するHTML FORM要素を生成するメタプログラミングの手法について知りたいと思います.
アイデアや例へのリンクはありますか?
python - Pythonで「ランナー」スクリプトを作成する最良の方法は?
ディレクトリに多数の Python モジュールがあり、すべてが派生クラスです。モジュールごとに、その中にあるクラスをインスタンス化し(実際のクラス名はモジュールファイル名で構築できます)、それぞれで「go」メソッドを呼び出す「ランナー」スクリプトが必要です。
モジュールがいくつあるかはわかりませんが、「bot_*.py」のようなものを介してディレクトリをグロブするすべてのモジュールを一覧表示できます
これは「メタプログラミング」に関するものだと思いますが、それを行うための最良の (最もエレガントな) 方法は何でしょうか?
python - Python/他の言語でmeta-meta-classes/meta-meta-meta-classesを使用している人はいますか?
最近、Pythonでメタクラスを発見しました。
基本的に、Pythonのメタクラスは、クラスを作成するクラスです。これを実行する理由はたくさんあります。たとえば、あらゆる種類のクラスの初期化です。工場でのクラスの登録、属性の複雑な検証、継承の仕組みの変更など。これらすべてが可能になるだけでなく、簡単になります。
しかし、Pythonでは、メタクラスもプレーンクラスです。それで、私は抽象化が有用にもっと高くなることができるかどうか疑問に思い始めました、そしてそれが可能であるように私には思えます:
- メタクラスは、パターン内の役割に対応するか、その役割を実装します(GOFパターン言語の場合と同様)。
- メタメタクラスはパターン自体です(単一のクラスではなく、抽象的な役割を表すクラスのタプルを作成できる場合)
- meta-meta-metaclassはパターンファクトリであり、GOFパターングループ(作成、構造、動作など)に対応します。特定のタイプの問題のケースを記述でき、それを解決する一連のクラスを提供するファクトリ。
- meta-meta-meta-metaclass(私が知る限り)は、パターンファクトリファクトリです。これは、問題のタイプを説明できるファクトリであり、パターンファクトリに問い合わせることができます。
私はこれについてオンラインでいくつかのことを見つけましたが、ほとんどの場合あまり役に立ちません。1つの問題は、言語が異なればメタクラスの定義もわずかに異なることです。
他の誰かがpython/elsewhereでこのようなメタクラスを使用したり、これが実際に使用されているのを見たり、考えたりしたことがありますか?他の言語の類似物は何ですか?たとえば、C ++では、テンプレートの再帰はどのくらい深くなることができますか?
さらに調べてみたいと思います。
metaprogramming - メタプログラミングとは正確には何ですか?
Java プラットフォームでの ployglot プログラミングに関するTheServerSide の記事を読んでいました。この記事の一部のコメントでは、メタプログラミングを (おそらくその場で) コードを生成する機能と呼んでいます。
メタプログラミングは、オンザフライでコードを生成する機能ですか、それとも実行時に既存のオブジェクトにメソッドと属性を挿入する機能ですか (Python、Ruby、Groovy などの一部の動的言語が許可するように)。
python - Pythonでの動的/ランタイムメソッドの作成(コード生成)
実行時にメソッドのコードを生成する必要があります。任意のコードを実行し、docstringを使用できることが重要です。
exec
私はとを組み合わせた解決策を思いつきました、これsetattr
はダミーの例です:
同じ結果を達成するためのより良い/より安全な/より慣用的な方法はありますか?
interface - Groovy: インターフェイスのメタクラスを委譲しますか?
Groovy のパッケージ名規則を使用して、次のように Java メソッドへの Groovy メソッド呼び出しをインターセプトできます。
クラス Foo のオブジェクトを実際に作成すると、これはうまく機能します。
しかし、Foo がインターフェースであり、その実装へのメソッド呼び出しをインターセプトしたい場合はどうでしょうか?
インターフェイスの既知の実装ごとに DelegatingMetaClass を持たずにこれを達成する方法はありますか?
ruby-on-rails - ActiveRecord にデータを設定する前に、setter メソッドでデータを暗号化するにはどうすればよいですか?
User
というDB列を持つRailsモデルを実装したいと思いますpassword
。呼び出したときに...
メソッドは、次のようにインスタンスに設定する前にクリアテキストをハッシュします。
コールバックを使用してみましたが、問題は、pw が更新されていなくても、ユーザーが保存されるたびに pw がハッシュされることです。そのため、ハッシュと再ハッシュが何度も繰り返されます。
メソッドを再定義しようとしましたpassword=
...
password=
しかし、存在しないというエラーが発生しました。
c++ - C++ で頻繁にテンプレート化されたコードをどのようにデバッグしますか?
C++ テンプレート メタプログラミングを使用している場合、自分のコードの何が問題なのかを理解するのは非常に困難です。エラーメッセージを理解するのが苦手なだけかもしれませんが、私が知る限り、印刷ステートメントやブレークポイントを挿入して何が起こっているのかを理解することはできません。
何かがコンパイルされない理由を突き止めようとするとき、単にコードを手動で選択して、それが私に来ることを期待する以外に、どのようなヒントやアドバイスを提供できますか?