問題タブ [function-signature]
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.
php - 「関数($arg = 0)」と「関数($arg)」の違い
質問
PHPの公式ドキュメントで、次のような宣言をどこかで見つけました。
そしてこのように:
$options
議論について、両者の違いは何ですか?
$options
2番目のものは、引数が0に設定されていると確信しています(指定しない場合)。しかし、最初のもの?メソッドには2つの必須引数があると言っているのではありませんか? (では、角括弧は何のためですか?)。
例
私はこれをオーバーライドしようとしています:
( schemaValidate() PHP ドキュメントから貼り付けられたフィンガープリント)
しかし、2 番目の引数を宣言すると$flags
、
SchemaValidate() は DOMDocument::schemaValidate($filename) と互換性がある必要があります
$flags
すべての動作の宣言を削除すると( PHP 5.5.2未満 の場合のように)
PHP 5.5.9を実行し、 PHP 5.5.2からコンストラクター$flags
に導入されましたが、互換性の問題が発生するのはなぜですか?schemaValidate()
ネイティブ メソッドをオーバーライドしたい場合、PHP ドキュメントが信頼できるかどうか、または適切な関数フィンガープリントを別の場所で確認する必要があるかどうかがわかりません。
ソースコードを見てみましたが、この関数は単なるC関数のエイリアスです。
c++ - 部分的に特殊化された関数メンバーへのポインターでベクターを自動的に埋めます
パイプラインのようなデザイン パターンに取り組んでいます。私の設計目標の 1 つは、特定のデータ クラスの関数メンバーへのポインターを提供することにより、パイプライン セグメントの動的リンクを有効にすることです。
各データ クラスには、整数テンプレート引数を使用してインデックス付けされた一連の関数メンバー (データ クラスの出力ポートを表す) があります。これらの関数は、キーワードを使用して戻り値の型を動的に推測しますauto
が、すべて同じ整数引数を受け入れc_Idx
ますtemplate <int N> auto getOutput(int c_Idx) const
。各関数に関連付けられた機能getOutput
は、部分的に特殊化された構造のセットで (ユーザーによって) 定義されますgetOutputImpl
。したがって、各データ クラスは、1 から一定数K
までの出力データ ポートを持つことができます。
一般的な方法でパイプライン セグメント間の動的リンクを可能にするために、タイプ のコンテナに格納できますstd::vector<boost::any>
。ただし、このベクトルに関数メンバー テンプレートへのポインターを自動的に入力できるようにする必要があります。
手動実装の例を以下に示します
上記の例の問題点は、メンバー関数ポインターpOutFunX
を手動で定義しているのに対し、この手順を自動化したいことです。
上記の設計と大きく異なる設計ソリューションは考慮していないことに注意してください。
ここでは、この問題を解決するためのいくつかの可能なアプローチについて、いくつかの考えを示します。現在検討中のソリューションの計画を作成しました。この質問に答えようとする場合に役立つ可能性があります。
- という名前のユーザー定義の部分的に特殊化された構造の数を取得します
getOutputImpl
。 - そのような構造体ごとに、 という名前のメンバーの出力タイプを決定します
apply
。 OutputPort
関連する署名を持つ関数へのポインターを作成し、それらをベクトルに追加する (再帰的な) メタテンプレート プロシージャを設定します。
上記の手順 1 ~ 3 はすべてコンパイル時に実行する必要があると思います。データ出力クラスを設計するユーザーの介入が必要ない場合は、ソリューションの美学については気にしません。ただし、カスタム コンパイラ マクロは使用したくありません。
この投稿は、メンバー関数の署名を推測する方法を示しています。これは役立つ場合があります。
c++ - これらの C++ ケースが異なるテンプレートをインスタンス化する理由
さまざまな関数を保存し、後でそれらの引数の型を抽出する必要がある機能を作成しようとしています。そのため、関数シグネチャをテンプレート パラメーターとして使用しています。しかし、やや予想外の結果が得られます。コードは次のとおりです。
したがって、変数someFoo
がタイプ の関数である場合void(void)
、最初のテンプレート がインスタンス化されますfoo<T>
。しかし、それを に変更するとvoid(int)
、目的の特殊なテンプレートがインスタンス化されます。何故ですか?
c++ - Template パラメーターとしての C++ 関数ポインター
以下のコード スニペットについて質問があります。コードを正しく理解しているかどうかわかりません。
<R(*)(Args...)>
は「関数ポインタの型」であり、R と (*) の間の点滅スペースは必ずしも必要ではありませんか?RunnableAdapter のインスタンス化とは何でしょうか? 以下のようなものだと思います。
void myFunction(int i){ // }; RunnableAdfapter<(void)(*)(int)> ra(MyFunction); ra.Run(1); //which calls MyFunction(1)
python - Pythonタプルを関数シグネチャに配置する
Python には、関数シグネチャのタプルから値をパターン一致できる、興味深い非常に便利なツールがあります。
これの使用に関する文献は見当たりません。Python コミュニティがこれに使用する語彙は何ですか? これを使用しないやむを得ない理由はありますか?
python - cliからpythonの関数のすべての可能なkwargsを見つける方法はありますか?
コマンドラインからPythonの関数の潜在的なキーワード引数を発見する方法はありますか? ソースやドキュメントを見ずに。ソースが表示されていなくても lib を c にする場合があります