問題タブ [function-declaration]
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++ - インライン関数プロトタイプ vs 通常の宣言 vs プロトタイプ
インライン関数とメインの違いは何ですか:
対次のように定期的に関数を宣言するだけです:
対関数プロトタイプ?
c - これらの関数ポインタ宣言の違いを説明する
次の関数宣言の違いを強調してください。
void (*p) (void *a[], int n)
void *(*p[]) (void *a, int n)
c# - 複数の型を受け入れる C# 関数を作成するより良い方法はありますか?
いくつかのコンテキスト: コレクションに物を追加するための主なメソッドが Add (またはそのようなもの) という名前のメソッド (または複数のメソッド) を介して行われるクラスを作成したいと思います。そのため、最良のシグネチャは params object[] です。内部的には、まさにこの関数は、受け入れることができるすべてのタイプを切り替え/ if-else する必要があります。したがって、最初はこの object[] 配列を受け入れることができましたが、object[][] や object[][][] なども受け入れて、メソッド/関数を内部的にフラット化できるようにしたいと思うかもしれません。ユーザーは、この関数を呼び出す前にそれを行う必要はありません。
そう...
単一の種類のオブジェクトに対してさまざまなレベルのリスト型を受け入れることができる関数を作成することは可能ですか? 副次的な質問として、クラスへのインターフェースを設計するとき、(編集:すでに十分なことが起こっているため、質問から削除されました。)object[]
またはどちらを受け入れるのが良いですIEnumerable<object>
かparams object[]
?
たとえば、 , の両方/すべて、および場合によっては , (および on、on および on など) のようなさらにネストを受け入れる関数を考えobject[]
ていますIEumerable<object>
。IEnumerable<IEnumerable<object>>
object[][]
これは可能ですか?
c - K&R C 関数宣言
重複の可能性:
この C 構文の利点は何ですか?
Small-C ハンドブックを読んでみると、おかしな方法で関数が宣言されていることがわかりました。
最初は、これは small-C の単なる癖だと思っていましたが、このスタイルを使用する C コードに出くわしました。特に、私はこの投稿に出くわしました。
投稿を見ると、この変更は単なるシンタックス シュガー以上のもののようです。
では、正確にはどのように違うのでしょうか? これについてどこで読むことができますか?
ありがとう。
PS Small-C ハンドブックでは関数宣言について説明していますが、Small-C では関数ポインタのような整数を使用することもできます (たとえば、256() は明らかに Small-C で構文的に有効な関数呼び出しです)。私がハンドブックで読んだことのほとんどは、このスタイルを使用している C コードに当てはまります。
c - C はオプションの null パラメータをサポートしていますか?
Pythonでは、私は次のようなことに慣れています
次に、修飾子引数はオプションであり、引数がないことは引数 0 と区別できます。C に同様の機能はありますか? 私はCとグーグルの経験がありませんが、Cでオプションのパラメーターを使用する方法についての明確な説明を見つけることができません.次のように、同様にそれらを割り当てることができるようです:
2 番目の引数はオプションで、使用しない場合はデフォルトで 0 になりますか? (編集:いいえ、とにかくこれは無効なCです)
send_command(SOMETHING)
しかし、関数はと を区別できsend_command(SOMETHING, 0)
ますか? 理想的には、2 番目のパラメーターは、0 を含む任意の uint8 値にすることができます。
NULL は 0 とは違うのでしょうか?
c++ - このパラメーターで関数を呼び出す方法: fun(Ty param[NUM])?
API ヘッダー ファイルで、奇妙な関数宣言を見つけました。
whereAPI_NUM_CONST
は列挙値であり、構造体であるため、それはその構造体の配列であるとAPI_SOMESTRUCT
推測されます。param
したがって、この関数は、入力または変更する既存のデータ フィールドを想定しています。API 関数が内部で何をしているのかはわかりません。
現在、私のコードは次のようになっています。
しかし、最近発生したヒープ破損エラーの原因はこのコードにあるのではないかと考えており、呼び出しが正しいかどうかはわかりません。
次のようなパラメーターの非 const 配列を含む関数ヘッダーを理解しています。
- では、API 関数宣言の正確な意味は何ですか?
param
値または参照によって呼び出されていますか ?- そして、どうすればその関数を正しく呼び出すことができますか?
c++ - 関数宣言における仮想キーワードの位置
virtual
戻り値型の前または後の関数宣言にキーワードを配置するかどうかに違いはありますか?
いくつかのレガシーコードをリファクタリングしているときに構文を見つけ、void virtual
それがまったくコンパイルされているのではないかと思っていました...
javascript - ブラウザーは同じ名前の複数の関数宣言をどのように処理しますか?
ブラウザーは同じ名前の複数の関数宣言をどのように処理しますか?
特定のテスト ケースは以下のとおりです。注: サーバー スクリプトが同じ名前で複数の関数宣言を作成することを許可する意味がないことはわかっていますが、興味深いので、回答する前にこれを理解してください。これは純粋に行動研究のためのものです。
当社の CMS は、単一の「ウィジェット」の複数のインスタンスを作成します。
そして
サーバーがこのウィジェットの複数のインスタンスを含むページをレンダリングするとき、ブラウザーはどの JavaScript 関数が使用されているかをどのように判断しますか? それぞれに個別のオブジェクト(関数)を実際に作成するブラウザはありますか?
ありがとう、j
c++ - C++ は、複雑なコンストラクターを呼び出す代わりに関数を宣言します
まず、stackoverflow ( this、this、およびthis one ) に既に同様の質問があることを知っているため、問題の理由を理解しています。残念ながら、それは私がそれを解決するのに役立ちません。
上記の質問はすべてデフォルトのパラメーターなしのコンストラクターに関するものですが、デフォルト値を持つ 2 つのパラメーター コンストラクターを使用しているときに問題が発生しました。オブジェクトの代わりに関数宣言。
これが私のコードの一部です(クラス名は長くて関連性がないため、名前を変更しました):
クラス内のすべての関数は実装されていますが、Concrete
クラス内の関数はどれも実装されていませんVirtual
(コンストラクタとデストラクタを除く)。
だから、今私の問題は、次のようなことをしたいということです:
素敵でキュートでエレガントですが、機能しません (リンクしたすべての質問と同じエラー)。問題を最も厄介な parseと呼んでいるこのフォーラムチュートリアルを見つけましたが、それは解決策です (引数を括弧で囲みます) は問題を解決しません (その場合、エラーメッセージの長い束ですが、編集できますそれが役立つ場合は後で質問します-それらはすべて仮想関数の継承に関連しています)。
デフォルトのすべてのパラメーターでコンストラクターを使用する場合、および最初のパラメーターを個別に構築する場合でも、コードをテストしました。
コードをそのまま使用できますが、現在使用しているものよりもエレガントなソリューションを誰かが提供してくれれば幸いです。
編集:最も厄介な解析を修正したときに表示されるエラーメッセージ
括弧付きのコードを使用する場合:
私のエラーは次のとおりです。
読みやすくするために、パスの名前を変更し、サンプル ファイルとクラス名 (上記と同じ) を挿入しました。備考:line 45
は、問題のコンストラクターの定義です。一方、line 36
ラインclass algoContainer
です。
私もこのコードで試しました:
そして、エラーは完全に異なります:
お役に立てれば。
c++ - 引数付きのこのC++パラメータ宣言を理解するのを手伝ってください
私は毎日ROOTC++ライブラリ(root.cern.ch)を使用しており、この関数宣言に出くわしたときにソースを参照していました。
ここで見つけることができます。
const char *
名前に引数や括弧を含める方法がわかりません。この式は、関数呼び出しやコンストラクターのように見えますがva_(fmt)
、後で単純なものとして使用されます。const char *
最初は、変数引数リストと関係があると思いました。これも私にとっては新しいことでしたが、stdarg.hのドキュメントを読んでも、この質問にはまったく役立ちませんでした。
これを何と呼べばいいのかよくわからないので、グーグルで助けを求めるのは非常に難しい。引数付きの宣言?それでは良い結果は得られません。
以前はC++を知っていると思っていましたが、ここで何が起こっているのでしょうか。すべての助けをいただければ幸いです。