問題タブ [optional-arguments]

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 投票する
1 に答える
37 参照

vb.net - VB.NET で関数呼び出しの結果である既定の引数を使用する方法はありますか?

私は、特定の接続文字列を想定した多数のデータベース アクセス関数を持っています。私のアプリケーション内で私は呼び出します

そして、GetTableItems()私は次のようなものを持っています

したがって、接続文字列はコード内の 1 か所にあり、メソッドを呼び出してそれを取得します。

私が今直面しているのは、同じデータベース関数を再利用したいということですが、接続文字列は異なります。すべての関数はスクリプトから生成されるため、簡単に書き直すことができDB_MyTable.GetTableItems()ますが、メイン アプリケーション コード内では、使用する接続文字列を知る必要があるすべての関数呼び出しを処理する必要があります。

引数をGetTableItems()次のように変更してみました:

デフォルトで、ほとんどのコードで既に使用している文字列を渡すことができることを期待していましたが、デフォルト値は定数式でなければならないというエラーが発生しました。これは、特定の接続文字列をいたるところにペッパーすることを意味しますが、これはやりたくありません。

私が求めていることを達成する方法はありますか、または接続文字列を必須の引数にして、アプリケーション内のすべての呼び出しを新しい署名と一致するように変更する必要がありますか?

いつもありがとう!

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

c++ - 関数の引数を呼び出し元の__FILE__の値にデフォルト設定できますか?

C ++では、デフォルトが、、であり、マクロを使用せずにヘッダーファイルでデフォルトが提供されるポイントではなく、呼び出し元のポイントで定義された関数のデフォルトの引数を持つことができ__PRETTY_FUNCTION___ますか?___FILE______LINE__

0 投票する
8 に答える
202208 参照

c++ - オプションの引数をC++のメソッドに渡す方法は?

オプションの引数をC++のメソッドに渡す方法は?任意のコードスニペット...

0 投票する
0 に答える
62 参照

python - このオプションのメソッド引数が異なる python オブジェクト間で共有されるのはなぜですか?

重複の可能性:
Python の「最小の驚き」: 変更可能な既定の引数

誰か私にこれを説明できますか?

mutate() は、オプションのパラメーターなしで呼び出されます。x は常に [] であるべきではありませんか? 私を混乱させているのは、 x の値も異なるオブジェクト間で共有されていることです...

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

function - Rの関数で2つの「...」ステートメントを使用する方法はありますか?

plot()と の両方を呼び出す関数を作成したいと考えています。ユーザーがいくつかの追加の引数を指定してから、またはlegend()に渡すことができれば理想的です。を使用して2つの関数のいずれかでこれを達成できることを私は知っています:plot()legend()...

xaxt = "n"これはプロットに渡されます。しかし、たとえば、関数ヘッダーで引数を事前に指定せずtitle = "legend"に呼び出しに渡す方法はありますか?legend()


受け入れられた回答からの更新: VitoshKa の方法は、私が望むことを達成するのに最もエレガントだと思いました。ただし、希望どおりに機能するまで、回避しなければならない小さな問題がいくつかありました。

最初に、どのパラメーターに渡しlegend、どのパラメーターに渡すかを確認しましたplot。この目的のための最初のステップは、どの引数がplot および/または par にlegend固有で、一部ではないかを確認することでした。legend

私がdput()ここで使用するのは、行plot.args <- c(names(formals(plot.default)), names(par()))が常に私が望まない新しい空のプロットを呼び出すためです。dputそのため、次の関数での出力を使用しました。

次に、重複する引数に対処する必要がありました ( 経由で取得しますdput(largs.all[(largs.all %in% pargs.all)]))。いくつかの場合、これは些細なことでした (例: )。他xyものは両方の関数に渡されます (例: pch)。しかし、私の実際のアプリケーションでは、他の戦略も使用しています (たとえば、 の変数名は異なりますadjが、この例では実装されていません)。

最後に、do.call関数を 2 つの方法で変更する必要がありました。まず、what の部分 (つまり、関数と呼ばれる部分) は文字にする必要があります (つまり、 の'plot'代わりにplot)。また、引数リストは少し異なる方法で作成する必要があります。

この例でpchは、 は と の両方plotに渡されlegend、はとのみにtitle渡されます。legendylimplot


Gavin Simpson のコメントに基づく更新 2 (Vitoshka の回答のコメントも参照):
(i) その通りです。
(ii) いつでも文字にできます。ただし、関数と同じ名前の変数がある場合は、関数名を で引用する必要がありますdo.call

(iii) 使用できc(x = 1, y = 1, list())、正常に動作します。しかし、私が実際に行ったこと (私が与えた例ではなく、私の実際の関数) は次のとおりです:これを 次とc(x = 1, y = 1, xlim = c(0, 2), list(bla='foo'))
比較してください:リストには(長さ 2 のベクトルで、私が欲しかったものです) しかありません。c(list(x = 1, y = 1, xlim = c(0, 2)), list(bla='foo'))
xlimxlim1xlim2xlim

したがって、あなたは私の例についてすべての点で正しいです。しかし、私の実際の関数 (より多くの変数を使用) では、これらの問題に遭遇したため、ここで文書化したいと思いました。不正確で申し訳ありません。

0 投票する
1 に答える
243 参照

actionscript-3 - AS3: オプションの引数と組み合わせのテスト

XML をフィルター処理する古いコードを再検討していますが、これはメソッドのパラメーターに簡単に適用できます (私が使用している方法では、本質的にそうです)。これは、私がよく遭遇する問題であり、これを回避する良い方法がわかりません。

問題は、引数が 3 つあることです。それらはすべてオプションです。どれが存在するかを確認し、どれが存在するかに基づいてそれらの値をテストします(可能性に従ってソートされます):

現在の形で繰り返しを繰り返してこれを書くには、もっと短い方法が必要だと思います。誰かがこれを書くためのよりクリーンで効率的な方法を提案できますか?

ご意見ありがとうございます。

編集: if ステートメントの順序が間違っていました。それを変更しました。

これは一般化できます。わかりやすくするためにコードを含めています。一般的な質問がまだ不明確な場合は、次のような印象を受けます。

オプションの引数のみのすべての組み合わせをテストする最もクリーンで効率的な方法は何ですか?

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

python - デコレータ ラッパー関数内のデコレータ引数にアクセスする

ラッパー関数内でデコレータの引数にアクセスしようとしていますが、うまくいきません。

私が持っているものは次のとおりです。

通常のデコレータのように使用します

デコレータの引数にアクセスできない理由が本当にわかりません。

0 投票する
1 に答える
409 参照

python - Pythonのoptparseの順序付きオプション

まず、optparseがバージョン2.7以降非推奨になっていることは知っていますが、使用しているマシンで使用できるのはPython2.3のみです。

問題は、コマンドラインでオプションが指定された順序をどのように知るかです。たとえば、次のようになります。

最初にオプションfを実行し、次にオプションbと

反対のことをします。

optargsドキュメントを読んだ後に思いついた唯一の解決策は、callbackアクションを使用してオプションを保存し、他のオプションの相対的な位置を検出することです。これは、optionsオブジェクトが特定の順序に従っていないように見えるためです。

この問題に対する別の(おそらくより良い)解決策を知っていますか?

0 投票する
6 に答える
2754 参照

python - Python で関数にパスを割り当てる

次のように、関数を引数として受け取る関数を定義するコードがあります。

ここで、何もしない f のデフォルト値を提供したいと思います。だから私は次のようにパスを使うと思った:

しかし、これはコンパイルされません。これをどのように行う必要がありますか?

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

python - Python関数のオプションの引数の命名方法

Python関数のオプションの引数に外部変数と同じ名前を付けても大丈夫ですか?以下に定義されている関数fとgは同じ出力を提供するため、正常に機能しているようです。しかし、これは悪い習慣と見なされ、場合によっては失敗しますか?