问题标签 [default-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.
scala - Scala中的有界类型参数化案例类和默认参数的问题
考虑以下(使用 Scala 2.8.1 和 2.9.0 测试):
最后一行失败:
更改它以val dogMap = AnimalsMap[Dog](Map())
修复它,但不再利用默认参数值。
鉴于 List 对应项按预期工作,为什么默认值被推断为 Map[Nothing,Nothing]?有没有办法创建一个使用map
arg 的默认值的 AnimalsMap 实例?
编辑:我已经接受了对我更紧迫的第二个问题的回答,但我仍然想知道为什么Map()
在这两种情况下推断的键类型不同:
编辑2:似乎类型界限是无关紧要的 - 案例类的任何参数类型都会导致问题:
c++ - 如何在算法中使用带有默认参数的重载函数?
我知道常见问题的答案如何指定指向重载函数的指针?:无论是赋值还是强制转换,所有其他 C++ 教程都会将这样的字符串大写(give 或 take static_cast
):
或者像这样:
它巧妙地选择<cctype>
了std::toupper
.
但这引出了一个问题:如何<locale>
以类似的方式选择重载?
或者,更实际地,考虑有人试图std::stoi
在算法中使用 C++11 将字符串向量转换为整数向量:stoi
有两个重载 ( string
/ wstring
),每个都采用两个额外的默认参数。
假设我不想显式绑定所有这些默认值,我相信如果不将此类调用包装在辅助函数或 lambda 中,就不可能做到这一点。是否有一个提升包装器或 TMP 魔法可以以完全通用的方式为我做这件事?一个包装器可以像call_as<char(char)>(fp2)
或者更有可能call_as<int(const std::string&)>(std::stoi)
被编写吗?
python - 参数的默认值
考虑以下函数:
每次我调用 foo 时,它都会打印一个包含比上次更多元素的新列表,例如:
现在考虑以下函数:
多次调用时,我们得到如下图:
即它不会在每次调用时打印更大的值。
这种看似不一致的行为背后的原因是什么?
此外,如何证明第一个示例中的反直觉行为是合理的,为什么函数在调用之间保持状态?
c++ - 防止实例化未使用的默认函数参数
假设我有一个函数,它将函数指针作为参数,并且该参数有一个默认参数。
假设我想在我的 class 上使用 register Foo
,但Foo
没有默认构造函数,所以我default_construct
不会使用它。显而易见的解决方案是执行以下操作:
但这不起作用。即使register<Foo>
可能只在一个地方调用,并且它传递了一个要使用的函数,default_construct<Foo>
仍然被编译器实例化,并且我得到编译器错误。似乎因为它从未被使用过,所以应该跳过它,但我想事实并非如此。
default_construct
当它被用作默认参数时,有什么方法可以防止被实例化?我能想到的唯一解决方案是将它放在模板中,但似乎应该有更好的解决方案。
php - PHP函数将默认值设置为对象
一个函数(实际上是另一个类的构造函数)需要一个对象class temp
作为参数。所以我定义interface itemp
并包含itemp $obj
为函数参数。这很好,我必须将class temp
对象传递给我的函数。但现在我想为这个itemp $obj
参数设置默认值。我怎样才能做到这一点?
还是不可能?
测试代码澄清:
parameters - 有没有办法拥有动态默认参数?
我正在尝试创建一个类,用户可以在其中修改成员变量以更改其成员函数的默认参数。
到目前为止,我的解决方法是使用幻数,这显然并不理想。
有没有更好的方法,还是我坚持这个“黑客”解决方案?
python - 如何将实例成员的默认参数值传递给方法?
我想使用实例属性的值将默认参数传递给实例方法:
尝试时,我收到以下错误消息:
我希望该方法的行为如下:
这里有什么问题,为什么这不起作用?我怎样才能做到这一点?
c++ - 我怎样才能清楚地指定我传递哪些参数以及哪些保持默认?
因此被问到:C++ 中的默认参数
假设我有这样的功能:void f(int p1=1, int p2=2, int p3=3, int p4=4);
我想只使用一些参数来调用它——其余的将是默认值。
像这样的东西会起作用:
但是它需要太多的代码才能实用。
有一个更好的方法吗?
python - numpy 子类将不接受来自 python 继承类的 __new__ 参数
我创建了一个名为“Parray”的 ndarray 子类,它接受两个参数:p 和维度。它自己工作得很好。现在,我想创建一个名为 SirPlotsAlot 的类,它继承了 Parray 而没有所有花哨的new和array_finalize等。
我的程序中的对象通过来回传递对象 p = Parameters() 来共享参数集。
现在,当我输入(文件是辅助.py)时:
期望得到一个不错的“初始化具有初始维数 3 的 Parray”,我得到了“2”。但是如果我输入:
我明白了
它认为“p”是一个int,但它不是。如果我玩弄它,我会得到很多奇怪的看似无关的错误。它认为的 int 是“2”。我完全迷路了。
我尝试过使用和不使用 # (1) 注释(超级调用)。
其他错误包括“AttributeError: 'list' object has no attribute 'p'”、“TypeError: new () 需要 2 个参数(给定 1 个)”、“ValueError: need more than 0 values to unpack”(我用 *args替换了new的参数,我不太明白)。
c++ - 为什么现有的函数参数不能用于评估其他默认参数?
我正在编写一个foo()
以 2const char*
作为参数的函数,pBegin
并且pEnd
. foo()
传递一个以空字符结尾的字符串。默认情况下pEnd
指向\0
字符串的(最后一个字符)。
但是,我在上面的行中收到一个错误:
为什么编译器不允许这样的操作?潜在的问题是什么?