タグ付けされた質問 「default-parameters」

30
「最小驚き」と可変デフォルト引数
Pythonをいじくり回している人は誰でも、次の問題で噛まれ(または引き裂かれ)ています。 def foo(a=[]): a.append(5) return a Python初心者は、この関数が常に1つの要素のみのリストを返すことを期待します[5]。結果は非常に異なり、非常に驚​​くべきものです(初心者にとって)。 >>> foo() [5] >>> foo() [5, 5] >>> foo() [5, 5, 5] >>> foo() [5, 5, 5, 5] >>> foo() 私のマネージャーはかつてこの機能に初めて遭遇し、それを言語の「劇的な設計上の欠陥」と呼んでいました。私はその振る舞いには根本的な説明があったと答えました、そしてあなたがその内部を理解していなければ、それは確かに非常に不可解で予想外です。しかし、私は次の質問に(自分自身で)答えることができませんでした。関数の実行時にではなく、関数の定義時にデフォルト引数をバインドする理由は何ですか?経験豊富な振る舞いが実際に使用されているとは思えません(実際にバグを増殖させることなく、Cで静的変数を使用したのは誰ですか?) 編集: Baczekは興味深い例を作りました。あなたのほとんどのコメント、特にウタールのコメントとともに、私はさらに詳しく説明しました: >>> def a(): ... print("a executed") ... return [] ... >>> >>> def b(x=a()): ... x.append(5) ... print(x) ... a …

26
JavaScript関数のデフォルトのパラメーター値を設定する
JavaScript関数にデフォルトを設定するオプションの引数を設定します。これは、値が定義されていない場合に使用されます(値が渡された場合は無視されます)。Rubyでは、次のように実行できます。 def read_file(file, delete_after = false) # code end これはJavaScriptで機能しますか? function read_file(file, delete_after = false) { // Code }

23
Javaはデフォルトのパラメーター値をサポートしていますか?
次の構造を持つJavaコードに出くわしました。 public MyParameterizedFunction(String param1, int param2) { this(param1, param2, false); } public MyParameterizedFunction(String param1, int param2, boolean param3) { //use all three parameters here } C ++ではパラメーターにデフォルト値を割り当てることができることを知っています。例えば: void MyParameterizedFunction(String param1, int param2, bool param3=false); Javaはこの種の構文をサポートしていますか?この2つのステップの構文が望ましい理由はありますか?


4
T-SQL-デフォルトのパラメーターを持つ関数
私はこのスクリプトを持っています: CREATE FUNCTION dbo.CheckIfSFExists(@param1 INT, @param2 BIT = 1 ) RETURNS BIT AS BEGIN IF EXISTS ( bla bla bla ) RETURN 1; RETURN 0; END GO このように手順で使用したい: IF dbo.CheckIfSFExists( 23 ) = 0 SET @retValue = 'bla bla bla'; しかし、私はエラーが出ます: プロシージャまたは関数dbo.CheckIfSFExistsに指定された引数の数が不十分です。 なぜ動作しないのですか?

2
Python、可変長の位置引数の後のデフォルトのキーワード引数
Python 2の関数呼び出しで可変長の位置パラメーターの後に名前付きパラメーターを使用できると思いましたがSyntaxError、Pythonクラスをインポートするとが表示されます。たとえば、次の「get」メソッドを使用して記述しています。 class Foo(object): def __init__(self): print "You have created a Foo." def get(self, *args, raw=False, vars=None): print len(args) print raw print vars エラーは次のようになります。 def get(self, *args, raw=False, vars=None): ^ SyntaxError: invalid syntax メソッドをいくつかの方法で呼び出せるようにしたいと思います。 f = Foo() f.get(arg1, arg2) f.get(arg1, raw=True) f.get(arg1, arg2, raw=True, vars=something) 等
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.