問題タブ [function-parameter]
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 - 多くのパラメータを持つ関数を持つのは悪い形ですか?代替手段は何ですか?
データベースを照会する検索関数があり、最大15個のオプションのパラメーターがあります。明らかにこれはきれいではなく、それを呼び出すのは少し混乱しています。PHPはメソッドのオーバーロードを許可していないので、私は巨大な関数シグネチャを作成しています。
他の場所では、パラメータクラスの作成などの提案を見てきました。多くのパラメータを使用することのデメリット
しかし、これは重すぎるようです。連想配列を渡すこともできますが、これによりパラメーターの数が減りますが、配列にどのキーが存在するかを示すドキュメントが組み込まれていないため、追跡が容易ではないと思います。
これを優雅に処理する他の方法はありますか?通常、他の言語では、最大12個のパラメーターを受け取り、それらのパラメーターのサブセットを受け入れ、内部でプライベートメソッドを呼び出す同じ名前のメソッドをprivate
作成する非常に醜いメソッドがあります。public
python - Python-関数パラメーターとしてリストを使用
params = ['a',3.4,None]
Pythonリスト(例)を関数のパラメーターとして使用するにはどうすればよいですか?例:
c - 文字列を引数として渡す-関数でsegfaultを取得する
解決済み解決策については、質問の下部を参照してください。
関数にString引数を渡すのに問題があり、関数が呼び出されたときにセグメンテーション違反が発生します。プログラムはコマンドライン入力を受け取り、検証後に関数に提供されたファイルを渡します。
私の関数コードは次のようになります。
関数が呼び出されると、segfaultがスローされ、inputFileの値は0x00000000です。関数呼び出しの前は、メモリの場所とテストファイルパスの値がありました。
関数プロトタイプと一致する、私が試したバリエーションのいくつか:
変数も変更しました。
デバッガーで有効なメモリアドレスと値を持つ変数をパラメーターとして使用すると、突然消去されるのはなぜですか?
編集1:
ここに提案を取り入れて、inputFile= argv[2]
行を削除すると、デバッガーはstrcpy
関数が機能していることを示しています。
compress(char *inputFile)
ただし、 Edwin Buckcompress(argv[2])
ごととunwindごとの両方を試しましたが、どちらの変更でも結果はCannot access memory at address 0xBEB9C74C
奇妙なことに、ファイル検証関数checkFile(char inputFile[])
はinputFile
値を処理しますが、同じパラメーターをcompress(char inputFile[])
関数に渡すと、セグメンテーション違反が発生します。
編集2-解決済み
教授を45分間困らせると、何かが起こっていることがわかります。compress()メソッド内でファイル読み取りバッファーを5MBの長さの配列として宣言したことがわかりました。これにより、スタックフレームが最大になりました。バッファ宣言をグローバル変数に変更することでうまくいき、コードが実行されます。
助けてくれてありがとう!
c - 関数ヘッダーで C 配列パラメーターのサイズを宣言する必要があるのはなぜですか?
関数ヘッダーで C 配列引数のサイズをわざわざ指定する必要がある理由を教えてもらえますか? 例えば:
と:
有用なエラーが発生します。おそらく、コメント/ドキュメントに役立ちますか?
php - 関数パラメーターとしていくつかのコンマ区切りの値を持つ文字列を渡す方法
例えば:
効果を次のようにしたいと思います。
javascript - Tempo(JavaScript / JSON)のパラメーターとして{{field}}を使用する
Tempoを使用してjavascript関数のパラメーターとして{{field}}を使用することは可能ですか?
何かのようなもの、
c++ - 関数 c++ のパラメーターとしてのクラス
私は一連の暗号化アルゴリズムをクラスとして作成しましたが、暗号化モードを実装したいと考えています (アルゴリズムの仕様の特定のものではなく、ウィキペディアに示されている一般化されたモード)。クラスのいずれかを受け入れることができる関数をどのように作成しますか?
編集:
これが私が達成したいことです
c# - C#orderby LINQ句を関数パラメーターに抽象化することは可能ですか?
ObservableCollectionがWPFリストビューにバインドされています。列ヘッダーをクリックして、ListViewコントロールの列を並べ替えることができるようにしたいと考えています。これを行うために、私はObservableCollectionをソートし、バインディングにGUIの更新を任せています。
ObservableCollectionを並べ替えるには、次のコードを使用しています。
注意:データはListViewにバインドされています
私が抱えている問題は、各列に、目的の効果を実現するためのコピーと貼り付けのコードがたくさんあることです。LINQステートメントの「orderbyx.IDdescending」部分を関数パラメーターとして渡すことは可能ですか?
または、目的の結果を達成するための完全に簡単な方法はありますか?
c++ - c++0x: 参照によってラムダをパラメーターとして受け取る適切な方法
int->int
参照によってラムダ パラメータを受け取る関数を定義する正しい方法は何ですか?
また
最後の形式が正当な構文であるかどうかはわかりません。
ラムダ パラメータを定義する他の方法はありますか?
python - グローバル変数を使用する代わりにローカル変数を関数に設定すると、関数が最適化されます
itertoolsモジュールのドキュメントでこのコメントを見つけました
上記のレシピの多くは、グローバルルックアップをデフォルト値として定義されたローカル変数に置き換えることで最適化できることに注意してください。たとえば、内積レシピは次のように記述できます。
どうですか?。
実用的な顕著なスピードアップはありますか(より大きな関数シグネチャの不便さのバランスをとることができます)?
示されているようなケースでのローカル変数の使用は、どの特定の条件に関連しますか?
編集: timeitでテストしましたが、関連する違いがあります。
vec1、vec2としての2つの40アイテムリストの場合:
グローバルルックアップ->3.22720959404
ローカルルックアップ->3.19884065683
つまり、約 1%のゲイン。