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

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

function - SMLでの「循環」関数宣言

次の例に示すように、関数を「循環」的に使用したいと思います。

cll2これを書き込むと、コンストラクターがバインドされていないというエラーがSMLに生成されます。誰かが私がこれらの線に沿って何かを書くのを手伝ってもらえますか?それはCで可能です。SMLで書きたいのですが。

0 投票する
3 に答える
16229 参照

c++ - 関数を`constexpr`として宣言しないのはなぜですか?

returnステートメントのみで構成される関数は宣言できます 。したがって、すべての引数がであり、関数のみが本体で呼び出されるconstexpr場合、コンパイル時に評価できます。そのような関数を宣言しない理由はありますか?constexprconstexprconstexpr

例:

constexpr 関数の宣言が害を及ぼす例を誰かが提供できますか?


いくつかの最初の考え:

関数を宣言する正当な理由がない場合でもconstexpr、キーワードが過渡的な役割を果たしているとは想像できconstexprませんでした。コンパイル時の評価を必要としないコードがないため、コンパイル時の評価を実装していないコンパイラでは、そのコードをコンパイルします(ただし、を使用して明示的に作成されたコードを必要とするコードでは確実に失敗しますconstexpr)。

しかし、私が理解していないこと:関数を宣言しない正当な理由がない場合、標準ライブラリ内のすべてconstexprの関数が宣言されないのはなぜですか?(まだ十分な時間がなかったため、まだ完了していないと主張することはできません。すべての機能を実行するのは簡単です。すべての機能を実行するかどうかを決定するのとは対照的です。)- --N2976は、コンテナなどの多くの標準ライブラリタイプにcstrを意図的に必要としないことを認識しています。これは、可能な実装には制限が多すぎるためです。それらを引数から除外して、疑問に思います。標準ライブラリの型に実際にcstrが含まれていると、それを操作するすべての関数が宣言されないのはなぜですか。constexprconstexprconstexprconstexpr

constexprほとんどの場合、コンパイル時の使用を想定していないという理由だけで関数を宣言したくないと主張することもできません。他の人がevtlを使用している場合です。あなたのコードを使用します、彼らはあなたがそうしないような使用を見るかもしれません。(ただし、もちろん、タイプ特性タイプなどには付与されます。)

だから私は、関数を故意に宣言しないための正当な理由と良い例があるに違いないと思いますconstexprか?

(「すべての関数」とは、常に意味しますconstexpr。つまり、単一のreturnステートメントとして定義され、constexpr cstrsを持つ型の引数のみを取り、関数のみを呼び出すための要件を満たすすべての関数constexpr。C++ 14以降、はるかに多くのこのような関数の本体で許可されています。たとえば、C ++ 14 constexpr関数はローカル変数とループを使用する可能性があるため、さらに幅広いクラスの関数を宣言できますconstexpr。)

質問なぜstd::forward捨てるのconstexprか?これの特殊なケースです。

0 投票する
3 に答える
130 参照

function - 機能「正規化」

DB正規化理論の概念は次のとおりです。

非キー フィールドが別の非キー フィールドに関する事実である場合、第 3 正規形に違反します。

関数/関数パラメーターに同様の概念を適用するのは理にかなっていますか?


次の関数を検討してください。

この例の関数では、3 番目のパラメーターは 2 番目のパラメーターを記述しており、最初のパラメーターに対する「態度」がないように見えます。ある意味、非正規化関数のように感じます。

私がこれを正しく定式化しているかどうかはわかりませんが、DB 内のテーブル名とテーブル フィールド、および関数名と関数パラメーターの間に類推があることに気付くことができます。

この類推が理にかなっているとすれば、関数設計者が DB 正規化理論から概念を借用することも理にかなっているのではないでしょうか?

0 投票する
3 に答える
15109 参照

c - int 引数を持つ定義では空の宣言が機能するのに、float 引数では機能しないのはなぜですか?

declaration違いは、パラメーターの型がないことだと思いました...

なぜこれが機能するのですか:

しかし、これはコンパイルに失敗します:

メッセージ付き:

エラー: 'fuc' のタイプが競合しています。注: デフォルトの昇格を持つ引数の型は、空のパラメーター名リストの宣言と一致することはできません

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

javascript - Javascript:フォークされた関数宣言はどれくらい効率的ですか?

名前付き関数式と IE <= 8 との非互換性に関するこの記事を読んだところです。

特に次の 1 つのステートメントに興味があります。

Web 開発の一般的なパターンは、ある種の機能テストに基づいて関数定義を「フォーク」し、最高のパフォーマンスを実現することです。

彼のページからの例:

私がこれを見たとき、私の即座の反応は、これを維持するのはひどいだろうということです. このように書かれたコードは、簡単に理解できるものではありません。

この場合、外部関数が宣言された直後に呼び出される別の関数内で関数を条件付きで定義する代わりに、ネストされたifs の関数を作成できます。もっと長くなりますが、私の意見では理解しやすいと思います (私は C/C++/Java から来ていますが)。

これらの関数が実行時にどのように異なるかについて、いくつかのテスト番号または説明を含む回答を希望します。

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

c++ - 複数のヘッダーと cpp ファイルを使用すると役立ちます

DragonFireSDK でアプリを作成しており、数千行のアプリを .cpp および .h ファイルで整理したい

何かをしようとすると、大量のエラーが発生します

したがって、私のapp.cpp(メイン、必須のもの)は次のようになります

コード:

#include "SaveData.h" から #include "Variables.h" までのコードはすべて次のようになります。

今、私はすでに何か間違ったことをしているかもしれませんが、ここにいくつかあります...私のAppMain.cpp、OnTimer.cppなどは次のようになります(AppMain()なども必要な機能です) コード:

ここが問題だと思います... Functions.cpp コード:

すべてのものを修正したかどうかを考えた後、エラーが発生しました...コード:

どんな助けでも大歓迎です!

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

haskell - haskellでタイプはどういう意味ですか

私はかなり混乱したクラスでこの質問をされました、私たちは以下を提示されました:

以下の型宣言の場合:

次の種類は何ですか?上記じゃないですか!

だから私が答えたのはこれでした:

::間違っていることは別として、関数のタイプは後に宣言されたものであり、したがってすでに与えられていると思ったので、この質問は私を混乱させました、そうではありませんか?

私は少し説明することで行うことができました、そして私は本当にどんな助けにも感謝します。

0 投票する
5 に答える
214 参照

function - (a-> a)とa->aの違い

私は気づきました(私はかつてそれを言われ、同じこと(a -> a)a -> a意味していましたが)、を使用するとエラーメッセージが表示されます(a -> a)(a -> a)タイプの中でブラケットを使用する場合にのみ使用する必要がありますか?(つまり(5 + 3)の代わりに5 + 3)?いつ必要なのかよくわからない

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

python - IPython の奇妙な動作: 変数名の「pass」、「return」、または「raise」が関数/クラス定義を終了させる

私はIPython シェルでSQLAlchemy ORM チュートリアルに取り組んpassword = Column(String)でおり、クラス定義を挿入する必要があるところまで来ました。奇妙なことに、入力するとすぐにクラス定義が終了しました。

少し遊んだ後、、、、またはクラスまたは関数定義でpass始まる行が次のようにあることがわかりましたreturnraise

IPython での定義を終了します。これはデフォルトの Python インタープリターでは発生しないため、Python の問題ではありません。これは IPython のバグだと思いますが、私のシステムだけではないことを確認したかったのです。誰でもこの動作を確認できますか?

編集: Mac OS X Snow Leopard にプリインストールされている Python 2.6 用の IPython 0.11.dev を使用していました。0.10.2 では、実際には関数/クラス定義を終了しません。

しかし、誤ってインデントをリセットしてしまうため、Enterもう一度押すとクラス定義が終了します。

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

c - 関数定義での float の奇妙な動作。宣言と定義の不一致がありますが、どのように機能しますか?

宣言内の関数の署名が定義と一致しない場合でも、次のコードはどのように機能しますか? 関数宣言には空のパラメーター リストがありますが、定義には 1 つのパラメーターがあります。コンパイラがエラーを出さないのはなぜですか?

正常にコンパイルおよび実行されます ( ideone )。

しかし、定義内のパラメーターのdoubleを からに変更するfloatと、次のエラー ( ideone )が発生します。

prog.c:7: エラー: 'f' の型が競合しています<br> prog.c:8: 注: デフォルトの昇格を持つ引数の型は、空のパラメーター名リスト宣言と一致できません
prog.c:2: エラー: 'f' の前の宣言はここにありました

の何が問題になっていfloatますか? floatでエラーが発生するのにエラーが発生するのはなぜdoubleですか?

以下は、宣言と定義のペアのリストと、機能するペアと機能しないペアです。

パラメータタイプfloat


だから私は基本的に2つの質問があります:

  • 宣言と定義に不一致があるにもかかわらず、最初の例が機能するのはなぜですか?
  • parameter-type が の場合に機能しないのはなぜfloatですか?

セクション 6.5.2.2 (C99) を理解しようとしましたが、言語が非常に不可解で、明確に理解できませんでした。正しいセクションを読んだかどうかさえわかりません。ですから、これらの行動を簡単な言葉で説明してください。