問題タブ [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.
ruby - 1 つのブロック呼び出しのみを拡張する
いくつかのプライベート属性を含むクラスがあります。私がやりたいことは、特定のブロックの実行のためだけに、これらのいくつかのセッターを動的に追加することです。
私ができるようにしたいことの例:
編集:これまで素晴らしい回答をありがとう。モジュールで定義されたセッターと競合する可能性があるクラス自体で属性リーダーを実際に定義する必要があるため、質問を明確にしました。質問を投稿するときにこの部分を忘れていました。(遅かった^^)
明確化: このクラスは、DSL が構成ファイルを書き込むためのものです。非開発者を対象としているため、オペレーターが少ないほど良いです。
私は現在、ブロックするプロキシクラスを使用してこれを実装してinstance_eval
いますが、値を設定するためにいじるinstance_variable_set
必要があり、好きではありません。コードを読みやすくできるかどうかを確認する別の方法を試しています。
c++ - ジェネリック プログラミング/メタ プログラミングをいつ/なぜ (あるとすれば) 考えるべきか
私見おっと、デザインパターンは理にかなっており、実際に適用することができました。
しかし、Modern C++ のような「ジェネリック プログラミング / メタ プログラミング」 となると、私は混乱してしまいます。
-- 新しいプログラミング/設計パラダイムですか?
――「ライブラリ開発」に限ったことですか?そうでない場合、どのような設計/コーディング状況でメタ プログラミング/ジェネリック プログラミングを使用する必要があるか。
-- テンプレートを使用すると、ジェネリック プログラミングを行っているということですか?
私はこのトピックについて多くのことをグーグルで調べましたが、BIG PICTURE を完全には把握していません。この投稿も参照してください。
以下の議論を読んだ後、今までのところ、私は確信しています(まだ正しくないかもしれません):
a) ジェネリック プログラミングとメタ プログラミングは、2 つの異なる概念です。
c++ - メタプログラミングとは?
この質問を参照して、メタプログラミングのコード例を説明して投稿してもらえますか? この用語をグーグルで検索しましたが、実際に使用できると確信させる例は見つかりませんでした.
また、Qt のメタ オブジェクト システムはメタプログラミングの一種ですか?
ジュニア
c++ - C++ SFINAE の例?
テンプレートのメタプログラミングについてもっと知りたいです。SFINAE は「代入の失敗はエラーではありません」の略であることは知っています。しかし、誰かが SFINAE の良い使い方を教えてくれませんか?
python - Django で使用される動的言語機能とメタプログラミング
Django で利用される Python の動的言語およびメタプログラミング機能の優れた要約記事はありますか? それとも、ここでそれを構築できますか? これを wiki スタイルのエントリとして設定します。
ruby - Ruby: 任意のメソッドのコードを表示 (およびコンテキストで実行)
次のようなことをしたいと思います。
print_method と foo.exec をどのようにコーディングしますか? できれば、それらは、たまたまどこから定義またはソースされたのかをアプリオリに知らなくても、任意のメソッドに対して機能する必要があります。
- はい、メソッドとブロックが完全に同じではないことはわかっています。しかし、これは通常の yield と call に近いものです。私はより良い解決策を知りません。
python - Pythonでメソッドのアリティを見つける方法
Pythonのメソッドのアリティ(受け取るパラメーターの数)を知りたいのですが。今私はこれをやっています:
私はこれを達成できるようにしたいと思います:
更新:現在、上記の関数は組み込み型で失敗します。これに関するヘルプもいただければ幸いです。
ruby - Rubyがto_sを自動的に実行しないのはなぜですか?
著者クラスがあります:
定義to_s
することで私はできますがputs Author.first
、できませんputs Author.first.rjust(10)
:
to_s
このような場合、Rubyが文字列メソッドの前に自動的に試行したほうがよいのではないでしょうか。この動作を取得する方法はありますか?
c++ - ここで不思議なことに繰り返されるテンプレートパターン(C ++)を使用できますか?
私は次のようなものに単純化できるC++アプリケーションを持っています:
私のアプリケーションはパフォーマンスが重要です。コレクションには通常、何千ものウィジェットがあります。AbstractWidget
(数十ある)から派生したクラスは、通常、仮想関数の多くをオーバーライドしないままにします。オーバーライドされるものは、通常、非常に高速な実装になります。
これを考えると、いくつかの巧妙なメタプログラミングでシステムを最適化できると思います。目標は、コードを管理しやすくしながら、関数のインライン化を活用し、仮想関数の呼び出しを回避することです。不思議なことに繰り返されるテンプレートパターンを調べました(説明については、ここを参照してください)。これは私が望むことをほぼ実行しているようですが、完全ではありません。
ここでCRTPを機能させる方法はありますか?または、誰かが考えることができる他の賢い解決策はありますか?
ruby-on-rails - この非推奨の方法はどのように機能しますか?
私はこの呼びかけを理解しようとしていました:
これは、この非推奨の方法を使用します。
ここで使用されているメタプログラミングはよくわかりません。new_record?
しかし、これはメソッドのエイリアシングの単なる別の方法ですか?実際にnew_record?
はまだ利用可能ですが、使用すると警告が発行されますか?これがどのように機能するかを誰かが説明したいですか?