問題タブ [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.

0 投票する
4 に答える
937 参照

ruby - 1 つのブロック呼び出しのみを拡張する

いくつかのプライベート属性を含むクラスがあります。私がやりたいことは、特定のブロックの実行のためだけに、これらのいくつかのセッターを動的に追加することです。

私ができるようにしたいことの例:

編集:これまで素晴らしい回答をありがとう。モジュールで定義されたセッターと競合する可能性があるクラス自体で属性リーダーを実際に定義する必要があるため、質問を明確にしました。質問を投稿するときにこの部分を忘れていました。(遅かった^^)

明確化: このクラスは、DSL が構成ファイルを書き込むためのものです。非開発者を対象としているため、オペレーターが少ないほど良いです。

私は現在、ブロックするプロキシクラスを使用してこれを実装してinstance_evalいますが、値を設定するためにいじるinstance_variable_set必要があり、好きではありません。コードを読みやすくできるかどうかを確認する別の方法を試しています。

0 投票する
9 に答える
2465 参照

c++ - ジェネリック プログラミング/メタ プログラミングをいつ/なぜ (あるとすれば) 考えるべきか

私見おっと、デザインパターンは理にかなっており、実際に適用することができました。

しかし、Modern C++ のような「ジェネリック プログラミング / メタ プログラミング」 となると、私は混乱してしまいます。

-- 新しいプログラミング/設計パラダイムですか?

――「ライブラリ開発」に限ったことですか?そうでない場合、どのような設計/コーディング状況でメタ プログラミング/ジェネリック プログラミングを使用する必要があるか。

-- テンプレートを使用すると、ジェネリック プログラミングを行っているということですか?

私はこのトピックについて多くのことをグーグルで調べましたが、BIG PICTURE を完全には把握していません。この投稿も参照してください。


以下の議論を読んだ後、今までのところ、私は確信しています(まだ正しくないかもしれません):

a) ジェネリック プログラミングとメタ プログラミングは、2 つの異なる概念です。

0 投票する
10 に答える
5234 参照

c++ - メタプログラミングとは?

この質問を参照して、メタプログラミングのコード例を説明して投稿してもらえますか? この用語をグーグルで検索しましたが、実際に使用できると確信させる例は見つかりませんでした.

また、Qt のメタ オブジェクト システムはメタプログラミングの一種ですか?

ジュニア

0 投票する
10 に答える
55891 参照

c++ - C++ SFINAE の例?

テンプレートのメタプログラミングについてもっと知りたいです。SFINAE は「代入の失敗はエラーではありません」の略であることは知っています。しかし、誰かが SFINAE の良い使い方を教えてくれませんか?

0 投票する
1 に答える
1122 参照

python - Django で使用される動的言語機能とメタプログラミング

Django で利用される Python の動的言語およびメタプログラミング機能の優れた要約記事はありますか? それとも、ここでそれを構築できますか? これを wiki スタイルのエントリとして設定します。

0 投票する
2 に答える
2962 参照

ruby - Ruby: 任意のメソッドのコードを表示 (およびコンテキストで実行)

次のようなことをしたいと思います。

print_method と foo.exec をどのようにコーディングしますか? できれば、それらは、たまたまどこから定義またはソースされたのかをアプリオリに知らなくても、任意のメソッドに対して機能する必要があります。

  • はい、メソッドとブロックが完全に同じではないことはわかっています。しかし、これは通常の yield と call に近いものです。私はより良い解決策を知りません。
0 投票する
5 に答える
9263 参照

python - Pythonでメソッドのアリティを見つける方法

Pythonのメソッドのアリティ(受け取るパラメーターの数)を知りたいのですが。今私はこれをやっています:

私はこれを達成できるようにしたいと思います:

更新:現在、上記の関数は組み込み型で失敗します。これに関するヘルプもいただければ幸いです。

0 投票する
4 に答える
2165 参照

ruby - Rubyがto_sを自動的に実行しないのはなぜですか?

著者クラスがあります:

定義to_sすることで私はできますがputs Author.first、できませんputs Author.first.rjust(10)

to_sこのような場合、Rubyが文字列メソッドの前に自動的に試行したほうがよいのではないでしょうか。この動作を取得する方法はありますか?

0 投票する
6 に答える
2486 参照

c++ - ここで不思議なことに繰り返されるテンプレートパターン(C ++)を使用できますか?

私は次のようなものに単純化できるC++アプリケーションを持っています:

私のアプリケーションはパフォーマンスが重要です。コレクションには通常、何千ものウィジェットがあります。AbstractWidget(数十ある)から派生したクラスは、通常、仮想関数の多くをオーバーライドしないままにします。オーバーライドされるものは、通常、非常に高速な実装になります。

これを考えると、いくつかの巧妙なメタプログラミングでシステムを最適化できると思います。目標は、コードを管理しやすくしながら、関数のインライン化を活用し、仮想関数の呼び出しを回避することです。不思議なことに繰り返されるテンプレートパターンを調べました(説明については、ここを参照してください)。これは私が望むことをほぼ実行しているようですが、完全ではありません。

ここでCRTPを機能させる方法はありますか?または、誰かが考えることができる他の賢い解決策はありますか?

0 投票する
1 に答える
832 参照

ruby-on-rails - この非推奨の方法はどのように機能しますか?

私はこの呼びかけを理解しようとしていました:

これは、この非推奨の方法を使用します。

ここで使用されているメタプログラミングはよくわかりません。new_record?しかし、これはメソッドのエイリアシングの単なる別の方法ですか?実際にnew_record?はまだ利用可能ですが、使用すると警告が発行されますか?これがどのように機能するかを誰かが説明したいですか?